libpurple/protocols/gg/lib/protobuf-c.h

Wed, 28 Sep 2016 09:32:19 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Wed, 28 Sep 2016 09:32:19 -0500
changeset 38066
2e94b6fa06a0
parent 37180
cf498d4b54bb
permissions
-rw-r--r--

Merged in CMaiku/pidgin (pull request #136)

Windows build fixes

35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
1 /*
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
2 * Copyright (c) 2008-2014, Dave Benson and the protobuf-c authors.
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
3 * All rights reserved.
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
4 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
5 * Redistribution and use in source and binary forms, with or without
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
6 * modification, are permitted provided that the following conditions are
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
7 * met:
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
8 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
9 * * Redistributions of source code must retain the above copyright
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
10 * notice, this list of conditions and the following disclaimer.
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
11 *
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
12 * * Redistributions in binary form must reproduce the above
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
13 * copyright notice, this list of conditions and the following disclaimer
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
14 * in the documentation and/or other materials provided with the
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
15 * distribution.
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
16 *
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
18 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
19 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
20 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
21 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
28 */
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
29
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
30 /*! \file
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
31 * \mainpage Introduction
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
32 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
33 * This is [protobuf-c], a C implementation of [Protocol Buffers].
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
34 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
35 * This file defines the public API for the `libprotobuf-c` support library.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
36 * This API includes interfaces that can be used directly by client code as well
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
37 * as the interfaces used by the code generated by the `protoc-c` compiler.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
38 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
39 * The `libprotobuf-c` support library performs the actual serialization and
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
40 * deserialization of Protocol Buffers messages. It interacts with structures,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
41 * definitions, and metadata generated by the `protoc-c` compiler from .proto
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
42 * files.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
43 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
44 * \authors Dave Benson and the `protobuf-c` authors.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
45 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
46 * \copyright 2008-2014. Licensed under the terms of the [BSD-2-Clause] license.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
47 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
48 * [protobuf-c]: https://github.com/protobuf-c/protobuf-c
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
49 * [Protocol Buffers]: https://developers.google.com/protocol-buffers/
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
50 * [BSD-2-Clause]: http://opensource.org/licenses/BSD-2-Clause
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
51 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
52 * \page gencode Generated Code
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
53 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
54 * For each enum, we generate a C enum. For each message, we generate a C
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
55 * structure which can be cast to a `ProtobufCMessage`.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
56 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
57 * For each enum and message, we generate a descriptor object that allows us to
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
58 * implement a kind of reflection on the structures.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
59 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
60 * First, some naming conventions:
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
61 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
62 * - The name of the type for enums and messages and services is camel case
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
63 * (meaning WordsAreCrammedTogether) except that double underscores are used
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
64 * to delimit scopes. For example, the following `.proto` file:
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
65 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
66 ~~~{.proto}
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
67 package foo.bar;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
68 message BazBah {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
69 optional int32 val = 1;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
70 }
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
71 ~~~
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
72 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
73 * would generate a C type `Foo__Bar__BazBah`.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
74 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
75 * - Identifiers for functions and globals are all lowercase, with camel case
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
76 * words separated by single underscores. For example, one of the function
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
77 * prototypes generated by `protoc-c` for the above example:
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
78 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
79 ~~~{.c}
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
80 Foo__Bar__BazBah *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
81 foo__bar__baz_bah__unpack
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
82 (ProtobufCAllocator *allocator,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
83 size_t len,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
84 const uint8_t *data);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
85 ~~~
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
86 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
87 * - Identifiers for enum values contain an uppercase prefix which embeds the
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
88 * package name and the enum type name.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
89 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
90 * - A double underscore is used to separate further components of identifier
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
91 * names.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
92 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
93 * For example, in the name of the unpack function above, the package name
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
94 * `foo.bar` has become `foo__bar`, the message name BazBah has become
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
95 * `baz_bah`, and the method name is `unpack`. These are all joined with double
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
96 * underscores to form the C identifier `foo__bar__baz_bah__unpack`.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
97 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
98 * We also generate descriptor objects for messages and enums. These are
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
99 * declared in the `.pb-c.h` files:
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
100 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
101 ~~~{.c}
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
102 extern const ProtobufCMessageDescriptor foo__bar__baz_bah__descriptor;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
103 ~~~
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
104 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
105 * The message structures all begin with `ProtobufCMessageDescriptor *` which is
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
106 * sufficient to allow them to be cast to `ProtobufCMessage`.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
107 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
108 * For each message defined in a `.proto` file, we generate a number of
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
109 * functions. Each function name contains a prefix based on the package name and
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
110 * message name in order to make it a unique C identifier.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
111 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
112 * - `unpack()`. Unpacks data for a particular message format. Note that the
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
113 * `allocator` parameter is usually `NULL` to indicate that the system's
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
114 * `malloc()` and `free()` functions should be used for dynamically allocating
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
115 * memory.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
116 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
117 ~~~{.c}
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
118 Foo__Bar__BazBah *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
119 foo__bar__baz_bah__unpack
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
120 (ProtobufCAllocator *allocator,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
121 size_t len,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
122 const uint8_t *data);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
123 ~~~
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
124 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
125 * - `free_unpacked()`. Frees a message object obtained with the `unpack()`
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
126 * method.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
127 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
128 ~~~{.c}
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
129 void foo__bar__baz_bah__free_unpacked
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
130 (Foo__Bar__BazBah *message,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
131 ProtobufCAllocator *allocator);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
132 ~~~
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
133 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
134 * - `get_packed_size()`. Calculates the length in bytes of the serialized
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
135 * representation of the message object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
136 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
137 ~~~{.c}
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
138 size_t foo__bar__baz_bah__get_packed_size
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
139 (const Foo__Bar__BazBah *message);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
140 ~~~
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
141 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
142 * - `pack()`. Pack a message object into a preallocated buffer. Assumes that
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
143 * the buffer is large enough. (Use `get_packed_size()` first.)
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
144 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
145 ~~~{.c}
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
146 size_t foo__bar__baz_bah__pack
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
147 (const Foo__Bar__BazBah *message,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
148 uint8_t *out);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
149 ~~~
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
150 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
151 * - `pack_to_buffer()`. Packs a message into a "virtual buffer". This is an
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
152 * object which defines an "append bytes" callback to consume data as it is
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
153 * serialized.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
154 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
155 ~~~{.c}
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
156 size_t foo__bar__baz_bah__pack_to_buffer
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
157 (const Foo__Bar__BazBah *message,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
158 ProtobufCBuffer *buffer);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
159 ~~~
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
160 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
161 * \page pack Packing and unpacking messages
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
162 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
163 * To pack a message, first compute the packed size of the message with
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
164 * protobuf_c_message_get_packed_size(), then allocate a buffer of at least
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
165 * that size, then call protobuf_c_message_pack().
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
166 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
167 * Alternatively, a message can be serialized without calculating the final size
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
168 * first. Use the protobuf_c_message_pack_to_buffer() function and provide a
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
169 * ProtobufCBuffer object which implements an "append" method that consumes
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
170 * data.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
171 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
172 * To unpack a message, call the protobuf_c_message_unpack() function. The
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
173 * result can be cast to an object of the type that matches the descriptor for
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
174 * the message.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
175 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
176 * The result of unpacking a message should be freed with
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
177 * protobuf_c_message_free_unpacked().
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
178 */
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
179
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
180 #ifndef PROTOBUF_C_H
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
181 #define PROTOBUF_C_H
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
182
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
183 #include <assert.h>
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
184 #include <limits.h>
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
185 #include <stddef.h>
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
186 #include <stdint.h>
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
187
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
188 #ifdef __cplusplus
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
189 # define PROTOBUF_C__BEGIN_DECLS extern "C" {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
190 # define PROTOBUF_C__END_DECLS }
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
191 #else
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
192 # define PROTOBUF_C__BEGIN_DECLS
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
193 # define PROTOBUF_C__END_DECLS
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
194 #endif
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
195
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
196 PROTOBUF_C__BEGIN_DECLS
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
197
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
198 #if defined(_WIN32) && defined(PROTOBUF_C_USE_SHARED_LIB)
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
199 # ifdef PROTOBUF_C_EXPORT
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
200 # define PROTOBUF_C__API __declspec(dllexport)
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
201 # else
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
202 # define PROTOBUF_C__API __declspec(dllimport)
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
203 # endif
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
204 #else
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
205 # define PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
206 #endif
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
207
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
208 #if !defined(PROTOBUF_C__NO_DEPRECATED) && \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
209 ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
210 # define PROTOBUF_C__DEPRECATED __attribute__((__deprecated__))
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
211 #else
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
212 # define PROTOBUF_C__DEPRECATED
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
213 #endif
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
214
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
215 #ifndef PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
216 #define PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(enum_name) \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
217 , _##enum_name##_IS_INT_SIZE = INT_MAX
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
218 #endif
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
219
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
220 #define PROTOBUF_C__SERVICE_DESCRIPTOR_MAGIC 0x14159bc3
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
221 #define PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC 0x28aaeef9
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
222 #define PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC 0x114315af
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
223
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
224 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
225 * \defgroup api Public API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
226 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
227 * This is the public API for `libprotobuf-c`. These interfaces are stable and
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
228 * subject to Semantic Versioning guarantees.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
229 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
230 * @{
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
231 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
232
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
233 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
234 * Values for the `flags` word in `ProtobufCFieldDescriptor`.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
235 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
236 typedef enum {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
237 /** Set if the field is repeated and marked with the `packed` option. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
238 PROTOBUF_C_FIELD_FLAG_PACKED = (1 << 0),
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
239
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
240 /** Set if the field is marked with the `deprecated` option. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
241 PROTOBUF_C_FIELD_FLAG_DEPRECATED = (1 << 1),
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
242 } ProtobufCFieldFlag;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
243
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
244 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
245 * Message field rules.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
246 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
247 * \see [Defining A Message Type] in the Protocol Buffers documentation.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
248 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
249 * [Defining A Message Type]:
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
250 * https://developers.google.com/protocol-buffers/docs/proto#simple
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
251 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
252 typedef enum {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
253 /** A well-formed message must have exactly one of this field. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
254 PROTOBUF_C_LABEL_REQUIRED,
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
255
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
256 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
257 * A well-formed message can have zero or one of this field (but not
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
258 * more than one).
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
259 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
260 PROTOBUF_C_LABEL_OPTIONAL,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
261
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
262 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
263 * This field can be repeated any number of times (including zero) in a
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
264 * well-formed message. The order of the repeated values will be
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
265 * preserved.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
266 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
267 PROTOBUF_C_LABEL_REPEATED,
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
268 } ProtobufCLabel;
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
269
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
270 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
271 * Field value types.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
272 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
273 * \see [Scalar Value Types] in the Protocol Buffers documentation.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
274 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
275 * [Scalar Value Types]:
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
276 * https://developers.google.com/protocol-buffers/docs/proto#scalar
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
277 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
278 typedef enum {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
279 PROTOBUF_C_TYPE_INT32, /**< int32 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
280 PROTOBUF_C_TYPE_SINT32, /**< signed int32 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
281 PROTOBUF_C_TYPE_SFIXED32, /**< signed int32 (4 bytes) */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
282 PROTOBUF_C_TYPE_INT64, /**< int64 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
283 PROTOBUF_C_TYPE_SINT64, /**< signed int64 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
284 PROTOBUF_C_TYPE_SFIXED64, /**< signed int64 (8 bytes) */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
285 PROTOBUF_C_TYPE_UINT32, /**< unsigned int32 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
286 PROTOBUF_C_TYPE_FIXED32, /**< unsigned int32 (4 bytes) */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
287 PROTOBUF_C_TYPE_UINT64, /**< unsigned int64 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
288 PROTOBUF_C_TYPE_FIXED64, /**< unsigned int64 (8 bytes) */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
289 PROTOBUF_C_TYPE_FLOAT, /**< float */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
290 PROTOBUF_C_TYPE_DOUBLE, /**< double */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
291 PROTOBUF_C_TYPE_BOOL, /**< boolean */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
292 PROTOBUF_C_TYPE_ENUM, /**< enumerated type */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
293 PROTOBUF_C_TYPE_STRING, /**< UTF-8 or ASCII string */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
294 PROTOBUF_C_TYPE_BYTES, /**< arbitrary byte sequence */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
295 PROTOBUF_C_TYPE_MESSAGE, /**< nested message */
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
296 } ProtobufCType;
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
297
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
298 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
299 * Field wire types.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
300 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
301 * \see [Message Structure] in the Protocol Buffers documentation.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
302 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
303 * [Message Structure]:
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
304 * https://developers.google.com/protocol-buffers/docs/encoding#structure
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
305 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
306 typedef enum {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
307 PROTOBUF_C_WIRE_TYPE_VARINT = 0,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
308 PROTOBUF_C_WIRE_TYPE_64BIT = 1,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
309 PROTOBUF_C_WIRE_TYPE_LENGTH_PREFIXED = 2,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
310 /* "Start group" and "end group" wire types are unsupported. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
311 PROTOBUF_C_WIRE_TYPE_32BIT = 5,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
312 } ProtobufCWireType;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
313
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
314 struct ProtobufCAllocator;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
315 struct ProtobufCBinaryData;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
316 struct ProtobufCBuffer;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
317 struct ProtobufCBufferSimple;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
318 struct ProtobufCEnumDescriptor;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
319 struct ProtobufCEnumValue;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
320 struct ProtobufCEnumValueIndex;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
321 struct ProtobufCFieldDescriptor;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
322 struct ProtobufCIntRange;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
323 struct ProtobufCMessage;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
324 struct ProtobufCMessageDescriptor;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
325 struct ProtobufCMessageUnknownField;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
326 struct ProtobufCMethodDescriptor;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
327 struct ProtobufCService;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
328 struct ProtobufCServiceDescriptor;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
329
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
330 typedef struct ProtobufCAllocator ProtobufCAllocator;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
331 typedef struct ProtobufCBinaryData ProtobufCBinaryData;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
332 typedef struct ProtobufCBuffer ProtobufCBuffer;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
333 typedef struct ProtobufCBufferSimple ProtobufCBufferSimple;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
334 typedef struct ProtobufCEnumDescriptor ProtobufCEnumDescriptor;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
335 typedef struct ProtobufCEnumValue ProtobufCEnumValue;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
336 typedef struct ProtobufCEnumValueIndex ProtobufCEnumValueIndex;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
337 typedef struct ProtobufCFieldDescriptor ProtobufCFieldDescriptor;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
338 typedef struct ProtobufCIntRange ProtobufCIntRange;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
339 typedef struct ProtobufCMessage ProtobufCMessage;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
340 typedef struct ProtobufCMessageDescriptor ProtobufCMessageDescriptor;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
341 typedef struct ProtobufCMessageUnknownField ProtobufCMessageUnknownField;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
342 typedef struct ProtobufCMethodDescriptor ProtobufCMethodDescriptor;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
343 typedef struct ProtobufCService ProtobufCService;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
344 typedef struct ProtobufCServiceDescriptor ProtobufCServiceDescriptor;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
345
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
346 /** Boolean type. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
347 typedef int protobuf_c_boolean;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
348
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
349 typedef void (*ProtobufCClosure)(const ProtobufCMessage *, void *closure_data);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
350 typedef void (*ProtobufCMessageInit)(ProtobufCMessage *);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
351 typedef void (*ProtobufCServiceDestroy)(ProtobufCService *);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
352
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
353 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
354 * Structure for defining a custom memory allocator.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
355 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
356 struct ProtobufCAllocator {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
357 /** Function to allocate memory. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
358 void *(*alloc)(void *allocator_data, size_t size);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
359
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
360 /** Function to free memory. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
361 void (*free)(void *allocator_data, void *pointer);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
362
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
363 /** Opaque pointer passed to `alloc` and `free` functions. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
364 void *allocator_data;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
365 };
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
366
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
367 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
368 * Structure for the protobuf `bytes` scalar type.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
369 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
370 * The data contained in a `ProtobufCBinaryData` is an arbitrary sequence of
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
371 * bytes. It may contain embedded `NUL` characters and is not required to be
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
372 * `NUL`-terminated.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
373 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
374 struct ProtobufCBinaryData {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
375 size_t len; /**< Number of bytes in the `data` field. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
376 uint8_t *data; /**< Data bytes. */
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
377 };
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
378
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
379 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
380 * Structure for defining a virtual append-only buffer. Used by
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
381 * protobuf_c_message_pack_to_buffer() to abstract the consumption of serialized
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
382 * bytes.
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
383 *
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
384 * `ProtobufCBuffer` "subclasses" may be defined on the stack. For example, to
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
385 * write to a `FILE` object:
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
386 *
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
387 ~~~{.c}
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
388 typedef struct {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
389 ProtobufCBuffer base;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
390 FILE *fp;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
391 } BufferAppendToFile;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
392
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
393 static void
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
394 my_buffer_file_append(ProtobufCBuffer *buffer,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
395 size_t len,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
396 const uint8_t *data)
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
397 {
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
398 BufferAppendToFile *file_buf = (BufferAppendToFile *) buffer;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
399 fwrite(data, len, 1, file_buf->fp); // XXX: No error handling!
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
400 }
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
401 ~~~
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
402 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
403 * To use this new type of ProtobufCBuffer, it could be called as follows:
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
404 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
405 ~~~{.c}
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
406 ...
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
407 BufferAppendToFile tmp = {0};
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
408 tmp.base.append = my_buffer_file_append;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
409 tmp.fp = fp;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
410 protobuf_c_message_pack_to_buffer(&message, &tmp);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
411 ...
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
412 ~~~
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
413 */
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
414 struct ProtobufCBuffer {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
415 /** Append function. Consumes the `len` bytes stored at `data`. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
416 void (*append)(ProtobufCBuffer *buffer,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
417 size_t len,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
418 const uint8_t *data);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
419 };
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
420
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
421 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
422 * Simple buffer "subclass" of `ProtobufCBuffer`.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
423 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
424 * A `ProtobufCBufferSimple` object is declared on the stack and uses a
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
425 * scratch buffer provided by the user for the initial allocation. It performs
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
426 * exponential resizing, using dynamically allocated memory. A
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
427 * `ProtobufCBufferSimple` object can be created and used as follows:
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
428 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
429 ~~~{.c}
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
430 uint8_t pad[128];
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
431 ProtobufCBufferSimple simple = PROTOBUF_C_BUFFER_SIMPLE_INIT(pad);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
432 ProtobufCBuffer *buffer = (ProtobufCBuffer *) &simple;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
433 ~~~
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
434 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
435 * `buffer` can now be used with `protobuf_c_message_pack_to_buffer()`. Once a
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
436 * message has been serialized to a `ProtobufCBufferSimple` object, the
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
437 * serialized data bytes can be accessed from the `.data` field.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
438 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
439 * To free the memory allocated by a `ProtobufCBufferSimple` object, if any,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
440 * call PROTOBUF_C_BUFFER_SIMPLE_CLEAR() on the object, for example:
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
441 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
442 ~~~{.c}
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
443 PROTOBUF_C_BUFFER_SIMPLE_CLEAR(&simple);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
444 ~~~
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
445 *
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
446 * \see PROTOBUF_C_BUFFER_SIMPLE_INIT
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
447 * \see PROTOBUF_C_BUFFER_SIMPLE_CLEAR
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
448 */
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
449 struct ProtobufCBufferSimple {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
450 /** "Base class". */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
451 ProtobufCBuffer base;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
452 /** Number of bytes allocated in `data`. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
453 size_t alloced;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
454 /** Number of bytes currently stored in `data`. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
455 size_t len;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
456 /** Data bytes. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
457 uint8_t *data;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
458 /** Whether `data` must be freed. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
459 protobuf_c_boolean must_free_data;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
460 /** Allocator to use. May be NULL to indicate the system allocator. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
461 ProtobufCAllocator *allocator;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
462 };
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
463
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
464 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
465 * Describes an enumeration as a whole, with all of its values.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
466 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
467 struct ProtobufCEnumDescriptor {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
468 /** Magic value checked to ensure that the API is used correctly. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
469 uint32_t magic;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
470
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
471 /** The qualified name (e.g., "namespace.Type"). */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
472 const char *name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
473 /** The unqualified name as given in the .proto file (e.g., "Type"). */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
474 const char *short_name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
475 /** Identifier used in generated C code. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
476 const char *c_name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
477 /** The dot-separated namespace. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
478 const char *package_name;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
479
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
480 /** Number elements in `values`. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
481 unsigned n_values;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
482 /** Array of distinct values, sorted by numeric value. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
483 const ProtobufCEnumValue *values;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
484
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
485 /** Number of elements in `values_by_name`. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
486 unsigned n_value_names;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
487 /** Array of named values, including aliases, sorted by name. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
488 const ProtobufCEnumValueIndex *values_by_name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
489
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
490 /** Number of elements in `value_ranges`. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
491 unsigned n_value_ranges;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
492 /** Value ranges, for faster lookups by numeric value. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
493 const ProtobufCIntRange *value_ranges;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
494
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
495 /** Reserved for future use. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
496 void *reserved1;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
497 /** Reserved for future use. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
498 void *reserved2;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
499 /** Reserved for future use. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
500 void *reserved3;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
501 /** Reserved for future use. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
502 void *reserved4;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
503 };
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
504
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
505 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
506 * Represents a single value of an enumeration.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
507 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
508 struct ProtobufCEnumValue {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
509 /** The string identifying this value in the .proto file. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
510 const char *name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
511
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
512 /** The string identifying this value in generated C code. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
513 const char *c_name;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
514
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
515 /** The numeric value assigned in the .proto file. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
516 int value;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
517 };
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
518
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
519 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
520 * Used by `ProtobufCEnumDescriptor` to look up enum values.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
521 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
522 struct ProtobufCEnumValueIndex {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
523 /** Name of the enum value. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
524 const char *name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
525 /** Index into values[] array. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
526 unsigned index;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
527 };
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
528
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
529 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
530 * Describes a single field in a message.
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
531 */
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
532 struct ProtobufCFieldDescriptor {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
533 /** Name of the field as given in the .proto file. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
534 const char *name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
535
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
536 /** Tag value of the field as given in the .proto file. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
537 uint32_t id;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
538
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
539 /** Whether the field is `REQUIRED`, `OPTIONAL`, or `REPEATED`. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
540 ProtobufCLabel label;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
541
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
542 /** The type of the field. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
543 ProtobufCType type;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
544
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
545 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
546 * The offset in bytes of the message's C structure's quantifier field
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
547 * (the `has_MEMBER` field for optional members or the `n_MEMBER` field
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
548 * for repeated members.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
549 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
550 unsigned quantifier_offset;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
551
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
552 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
553 * The offset in bytes into the message's C structure for the member
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
554 * itself.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
555 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
556 unsigned offset;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
557
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
558 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
559 * A type-specific descriptor.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
560 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
561 * If `type` is `PROTOBUF_C_TYPE_ENUM`, then `descriptor` points to the
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
562 * corresponding `ProtobufCEnumDescriptor`.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
563 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
564 * If `type` is `PROTOBUF_C_TYPE_MESSAGE`, then `descriptor` points to
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
565 * the corresponding `ProtobufCMessageDescriptor`.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
566 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
567 * Otherwise this field is NULL.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
568 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
569 const void *descriptor; /* for MESSAGE and ENUM types */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
570
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
571 /** The default value for this field, if defined. May be NULL. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
572 const void *default_value;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
573
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
574 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
575 * A flag word. Zero or more of the bits defined in the
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
576 * `ProtobufCFieldFlag` enum may be set.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
577 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
578 uint32_t flags;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
579
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
580 /** Reserved for future use. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
581 unsigned reserved_flags;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
582 /** Reserved for future use. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
583 void *reserved2;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
584 /** Reserved for future use. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
585 void *reserved3;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
586 };
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
587
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
588 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
589 * Helper structure for optimizing int => index lookups in the case
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
590 * where the keys are mostly consecutive values, as they presumably are for
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
591 * enums and fields.
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
592 *
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
593 * The data structures requires that the values in the original array are
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
594 * sorted.
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
595 */
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
596 struct ProtobufCIntRange {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
597 int start_value;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
598 unsigned orig_index;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
599 /*
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
600 * NOTE: the number of values in the range can be inferred by looking
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
601 * at the next element's orig_index. A dummy element is added to make
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
602 * this simple.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
603 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
604 };
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
605
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
606 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
607 * An instance of a message.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
608 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
609 * `ProtobufCMessage` is a light-weight "base class" for all messages.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
610 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
611 * In particular, `ProtobufCMessage` doesn't have any allocation policy
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
612 * associated with it. That's because it's common to create `ProtobufCMessage`
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
613 * objects on the stack. In fact, that's what we recommend for sending messages.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
614 * If the object is allocated from the stack, you can't really have a memory
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
615 * leak.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
616 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
617 * This means that calls to functions like protobuf_c_message_unpack() which
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
618 * return a `ProtobufCMessage` must be paired with a call to a free function,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
619 * like protobuf_c_message_free_unpacked().
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
620 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
621 struct ProtobufCMessage {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
622 /** The descriptor for this message type. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
623 const ProtobufCMessageDescriptor *descriptor;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
624 /** The number of elements in `unknown_fields`. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
625 unsigned n_unknown_fields;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
626 /** The fields that weren't recognized by the parser. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
627 ProtobufCMessageUnknownField *unknown_fields;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
628 };
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
629
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
630 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
631 * Describes a message.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
632 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
633 struct ProtobufCMessageDescriptor {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
634 /** Magic value checked to ensure that the API is used correctly. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
635 uint32_t magic;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
636
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
637 /** The qualified name (e.g., "namespace.Type"). */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
638 const char *name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
639 /** The unqualified name as given in the .proto file (e.g., "Type"). */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
640 const char *short_name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
641 /** Identifier used in generated C code. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
642 const char *c_name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
643 /** The dot-separated namespace. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
644 const char *package_name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
645
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
646 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
647 * Size in bytes of the C structure representing an instance of this
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
648 * type of message.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
649 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
650 size_t sizeof_message;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
651
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
652 /** Number of elements in `fields`. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
653 unsigned n_fields;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
654 /** Field descriptors, sorted by tag number. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
655 const ProtobufCFieldDescriptor *fields;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
656 /** Used for looking up fields by name. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
657 const unsigned *fields_sorted_by_name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
658
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
659 /** Number of elements in `field_ranges`. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
660 unsigned n_field_ranges;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
661 /** Used for looking up fields by id. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
662 const ProtobufCIntRange *field_ranges;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
663
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
664 /** Message initialisation function. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
665 ProtobufCMessageInit message_init;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
666
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
667 /** Reserved for future use. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
668 void *reserved1;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
669 /** Reserved for future use. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
670 void *reserved2;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
671 /** Reserved for future use. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
672 void *reserved3;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
673 };
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
674
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
675 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
676 * An unknown message field.
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
677 */
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
678 struct ProtobufCMessageUnknownField {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
679 /** The tag number. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
680 uint32_t tag;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
681 /** The wire type of the field. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
682 ProtobufCWireType wire_type;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
683 /** Number of bytes in `data`. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
684 size_t len;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
685 /** Field data. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
686 uint8_t *data;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
687 };
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
688
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
689 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
690 * Method descriptor.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
691 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
692 struct ProtobufCMethodDescriptor {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
693 /** Method name. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
694 const char *name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
695 /** Input message descriptor. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
696 const ProtobufCMessageDescriptor *input;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
697 /** Output message descriptor. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
698 const ProtobufCMessageDescriptor *output;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
699 };
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
700
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
701 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
702 * Service.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
703 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
704 struct ProtobufCService {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
705 /** Service descriptor. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
706 const ProtobufCServiceDescriptor *descriptor;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
707 /** Function to invoke the service. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
708 void (*invoke)(ProtobufCService *service,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
709 unsigned method_index,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
710 const ProtobufCMessage *input,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
711 ProtobufCClosure closure,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
712 void *closure_data);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
713 /** Function to destroy the service. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
714 void (*destroy)(ProtobufCService *service);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
715 };
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
716
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
717 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
718 * Service descriptor.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
719 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
720 struct ProtobufCServiceDescriptor {
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
721 /** Magic value checked to ensure that the API is used correctly. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
722 uint32_t magic;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
723
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
724 /** Service name. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
725 const char *name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
726 /** Short version of service name. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
727 const char *short_name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
728 /** C identifier for the service name. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
729 const char *c_name;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
730 /** Package name. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
731 const char *package;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
732 /** Number of elements in `methods`. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
733 unsigned n_methods;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
734 /** Method descriptors, in the order defined in the .proto file. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
735 const ProtobufCMethodDescriptor *methods;
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
736 /** Sort index of methods. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
737 const unsigned *method_indices_by_name;
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
738 };
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
739
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
740 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
741 * Get the version of the protobuf-c library. Note that this is the version of
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
742 * the library linked against, not the version of the headers compiled against.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
743 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
744 * \return A string containing the version number of protobuf-c.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
745 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
746 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
747 const char *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
748 protobuf_c_version(void);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
749
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
750 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
751 * Get the version of the protobuf-c library. Note that this is the version of
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
752 * the library linked against, not the version of the headers compiled against.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
753 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
754 * \return A 32 bit unsigned integer containing the version number of
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
755 * protobuf-c, represented in base-10 as (MAJOR*1E6) + (MINOR*1E3) + PATCH.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
756 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
757 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
758 uint32_t
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
759 protobuf_c_version_number(void);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
760
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
761 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
762 * The version of the protobuf-c headers, represented as a string using the same
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
763 * format as protobuf_c_version().
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
764 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
765 #define PROTOBUF_C_VERSION "1.0.2"
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
766
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
767 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
768 * The version of the protobuf-c headers, represented as an integer using the
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
769 * same format as protobuf_c_version_number().
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
770 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
771 #define PROTOBUF_C_VERSION_NUMBER 1000002
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
772
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
773 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
774 * The minimum protoc-c version which works with the current version of the
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
775 * protobuf-c headers.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
776 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
777 #define PROTOBUF_C_MIN_COMPILER_VERSION 1000000
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
778
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
779 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
780 * Look up a `ProtobufCEnumValue` from a `ProtobufCEnumDescriptor` by name.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
781 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
782 * \param desc
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
783 * The `ProtobufCEnumDescriptor` object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
784 * \param name
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
785 * The `name` field from the corresponding `ProtobufCEnumValue` object to
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
786 * match.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
787 * \return
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
788 * A `ProtobufCEnumValue` object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
789 * \retval NULL
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
790 * If not found.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
791 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
792 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
793 const ProtobufCEnumValue *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
794 protobuf_c_enum_descriptor_get_value_by_name(
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
795 const ProtobufCEnumDescriptor *desc,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
796 const char *name);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
797
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
798 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
799 * Look up a `ProtobufCEnumValue` from a `ProtobufCEnumDescriptor` by numeric
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
800 * value.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
801 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
802 * \param desc
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
803 * The `ProtobufCEnumDescriptor` object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
804 * \param value
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
805 * The `value` field from the corresponding `ProtobufCEnumValue` object to
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
806 * match.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
807 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
808 * \return
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
809 * A `ProtobufCEnumValue` object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
810 * \retval NULL
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
811 * If not found.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
812 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
813 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
814 const ProtobufCEnumValue *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
815 protobuf_c_enum_descriptor_get_value(
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
816 const ProtobufCEnumDescriptor *desc,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
817 int value);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
818
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
819 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
820 * Look up a `ProtobufCFieldDescriptor` from a `ProtobufCMessageDescriptor` by
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
821 * the name of the field.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
822 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
823 * \param desc
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
824 * The `ProtobufCMessageDescriptor` object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
825 * \param name
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
826 * The name of the field.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
827 * \return
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
828 * A `ProtobufCFieldDescriptor` object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
829 * \retval NULL
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
830 * If not found.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
831 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
832 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
833 const ProtobufCFieldDescriptor *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
834 protobuf_c_message_descriptor_get_field_by_name(
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
835 const ProtobufCMessageDescriptor *desc,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
836 const char *name);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
837
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
838 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
839 * Look up a `ProtobufCFieldDescriptor` from a `ProtobufCMessageDescriptor` by
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
840 * the tag value of the field.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
841 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
842 * \param desc
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
843 * The `ProtobufCMessageDescriptor` object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
844 * \param value
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
845 * The tag value of the field.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
846 * \return
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
847 * A `ProtobufCFieldDescriptor` object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
848 * \retval NULL
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
849 * If not found.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
850 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
851 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
852 const ProtobufCFieldDescriptor *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
853 protobuf_c_message_descriptor_get_field(
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
854 const ProtobufCMessageDescriptor *desc,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
855 unsigned value);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
856
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
857 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
858 * Determine the number of bytes required to store the serialised message.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
859 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
860 * \param message
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
861 * The message object to serialise.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
862 * \return
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
863 * Number of bytes.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
864 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
865 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
866 size_t
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
867 protobuf_c_message_get_packed_size(const ProtobufCMessage *message);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
868
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
869 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
870 * Serialise a message from its in-memory representation.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
871 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
872 * This function stores the serialised bytes of the message in a pre-allocated
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
873 * buffer.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
874 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
875 * \param message
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
876 * The message object to serialise.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
877 * \param[out] out
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
878 * Buffer to store the bytes of the serialised message. This buffer must
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
879 * have enough space to store the packed message. Use
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
880 * protobuf_c_message_get_packed_size() to determine the number of bytes
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
881 * required.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
882 * \return
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
883 * Number of bytes stored in `out`.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
884 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
885 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
886 size_t
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
887 protobuf_c_message_pack(const ProtobufCMessage *message, uint8_t *out);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
888
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
889 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
890 * Serialise a message from its in-memory representation to a virtual buffer.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
891 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
892 * This function calls the `append` method of a `ProtobufCBuffer` object to
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
893 * consume the bytes generated by the serialiser.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
894 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
895 * \param message
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
896 * The message object to serialise.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
897 * \param buffer
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
898 * The virtual buffer object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
899 * \return
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
900 * Number of bytes passed to the virtual buffer.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
901 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
902 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
903 size_t
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
904 protobuf_c_message_pack_to_buffer(
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
905 const ProtobufCMessage *message,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
906 ProtobufCBuffer *buffer);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
907
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
908 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
909 * Unpack a serialised message into an in-memory representation.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
910 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
911 * \param descriptor
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
912 * The message descriptor.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
913 * \param allocator
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
914 * `ProtobufCAllocator` to use for memory allocation. May be NULL to
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
915 * specify the default allocator.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
916 * \param len
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
917 * Length in bytes of the serialised message.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
918 * \param data
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
919 * Pointer to the serialised message.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
920 * \return
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
921 * An unpacked message object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
922 * \retval NULL
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
923 * If an error occurred during unpacking.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
924 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
925 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
926 ProtobufCMessage *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
927 protobuf_c_message_unpack(
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
928 const ProtobufCMessageDescriptor *descriptor,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
929 ProtobufCAllocator *allocator,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
930 size_t len,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
931 const uint8_t *data);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
932
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
933 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
934 * Free an unpacked message object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
935 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
936 * This function should be used to deallocate the memory used by a call to
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
937 * protobuf_c_message_unpack().
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
938 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
939 * \param message
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
940 * The message object to free.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
941 * \param allocator
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
942 * `ProtobufCAllocator` to use for memory deallocation. May be NULL to
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
943 * specify the default allocator.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
944 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
945 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
946 void
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
947 protobuf_c_message_free_unpacked(
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
948 ProtobufCMessage *message,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
949 ProtobufCAllocator *allocator);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
950
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
951 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
952 * Check the validity of a message object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
953 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
954 * Makes sure all required fields (`PROTOBUF_C_LABEL_REQUIRED`) are present.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
955 * Recursively checks nested messages.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
956 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
957 * \retval TRUE
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
958 * Message is valid.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
959 * \retval FALSE
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
960 * Message is invalid.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
961 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
962 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
963 protobuf_c_boolean
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
964 protobuf_c_message_check(const ProtobufCMessage *);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
965
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
966 /** Message initialiser. */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
967 #define PROTOBUF_C_MESSAGE_INIT(descriptor) { descriptor, 0, NULL }
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
968
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
969 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
970 * Initialise a message object from a message descriptor.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
971 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
972 * \param descriptor
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
973 * Message descriptor.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
974 * \param message
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
975 * Allocated block of memory of size `descriptor->sizeof_message`.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
976 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
977 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
978 void
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
979 protobuf_c_message_init(
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
980 const ProtobufCMessageDescriptor *descriptor,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
981 void *message);
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
982
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
983 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
984 * Free a service.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
985 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
986 * \param service
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
987 * The service object to free.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
988 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
989 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
990 void
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
991 protobuf_c_service_destroy(ProtobufCService *service);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
992
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
993 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
994 * Look up a `ProtobufCMethodDescriptor` by name.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
995 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
996 * \param desc
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
997 * Service descriptor.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
998 * \param name
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
999 * Name of the method.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1000 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1001 * \return
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1002 * A `ProtobufCMethodDescriptor` object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1003 * \retval NULL
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1004 * If not found.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1005 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1006 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1007 const ProtobufCMethodDescriptor *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1008 protobuf_c_service_descriptor_get_method_by_name(
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1009 const ProtobufCServiceDescriptor *desc,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1010 const char *name);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
1011
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1012 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1013 * Initialise a `ProtobufCBufferSimple` object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1014 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1015 #define PROTOBUF_C_BUFFER_SIMPLE_INIT(array_of_bytes) \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1016 { \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1017 { protobuf_c_buffer_simple_append }, \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1018 sizeof(array_of_bytes), \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1019 0, \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1020 (array_of_bytes), \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1021 0, \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1022 NULL \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1023 }
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
1024
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1025 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1026 * Clear a `ProtobufCBufferSimple` object, freeing any allocated memory.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1027 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1028 #define PROTOBUF_C_BUFFER_SIMPLE_CLEAR(simp_buf) \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1029 do { \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1030 if ((simp_buf)->must_free_data) { \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1031 if ((simp_buf)->allocator != NULL) \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1032 (simp_buf)->allocator->free( \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1033 (simp_buf)->allocator, \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1034 (simp_buf)->data); \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1035 else \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1036 free((simp_buf)->data); \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1037 } \
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1038 } while (0)
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
1039
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1040 /**
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1041 * The `append` method for `ProtobufCBufferSimple`.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1042 *
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1043 * \param buffer
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1044 * The buffer object to append to. Must actually be a
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1045 * `ProtobufCBufferSimple` object.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1046 * \param len
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1047 * Number of bytes in `data`.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1048 * \param data
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1049 * Data to append.
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1050 */
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1051 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1052 void
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1053 protobuf_c_buffer_simple_append(
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1054 ProtobufCBuffer *buffer,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1055 size_t len,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1056 const unsigned char *data);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
1057
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1058 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1059 void
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1060 protobuf_c_service_generated_init(
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1061 ProtobufCService *service,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1062 const ProtobufCServiceDescriptor *descriptor,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1063 ProtobufCServiceDestroy destroy);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
1064
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1065 PROTOBUF_C__API
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1066 void
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1067 protobuf_c_service_invoke_internal(
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1068 ProtobufCService *service,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1069 unsigned method_index,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1070 const ProtobufCMessage *input,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1071 ProtobufCClosure closure,
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1072 void *closure_data);
35617
c9069e0e3c36 Update internal libgadu to 1.12.0-rc2
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
1073
37180
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1074 /**@}*/
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1075
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1076 PROTOBUF_C__END_DECLS
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1077
cf498d4b54bb Update internal libgadu to 1.12.1
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35617
diff changeset
1078 #endif /* PROTOBUF_C_H */

mercurial