Packages
gpb
3.17.11
5.0.0
4.21.7
4.21.6
4.21.5
4.21.4
4.21.3
4.21.2
4.21.1
4.21.0
4.20.0
4.19.9
4.19.8
4.19.7
4.19.6
4.19.5
4.19.4
4.19.3
4.19.2
4.19.1
4.19.0
4.18.0
4.17.7
4.17.6
4.17.5
4.17.3
4.17.2
4.17.1
4.17.0
4.16.2
4.16.1
4.16.0
4.15.2
4.15.1
4.14.2
4.14.1
4.14.0
4.13.0
4.12.0
4.11.2
4.11.1
4.11.0
4.10.6
4.10.5
4.10.4
4.10.3
4.10.2
4.10.1
4.10.0
4.9.3
4.9.2
4.9.1
4.9.0
4.8.0
4.7.3
4.7.2
4.7.1
4.7.0
4.6.0
4.5.1
4.5.0
4.4.1
4.4.0
4.3.3
4.3.2
4.3.1
4.3.0
4.2.3
4.2.2
4.2.1
4.2.0
4.1.9
4.1.8
4.1.7
4.1.6
4.1.5
4.1.4
4.1.3
4.1.2
4.1.1
4.1.0
4.0.2
4.0.1
4.0.0
3.28.1
3.28.0
3.27.7
3.27.6
3.27.5
3.27.4
3.27.3
3.27.2
3.27.1
3.27.0
3.26.8
3.26.7
3.26.6
3.26.5
3.26.4
3.26.3
3.26.2
3.26.1
3.26.0
3.25.2
3.25.1
3.25.0
3.24.4
3.24.3
3.24.2
3.24.1
3.24.0
3.23.2
3.23.1
3.23.0
3.22.5
3.22.4
3.22.3
3.22.2
3.22.1
3.22.0
3.21.3
3.21.2
3.21.1
3.21.0
3.20.3
3.20.2
3.20.0
3.19.0
3.18.10
3.18.9
3.18.8
3.18.7
3.18.6
3.18.5
3.18.4
3.18.3
3.18.2
3.18.1
3.18.0
3.17.13
3.17.12
3.17.11
3.17.10
3.17.9
3.17.8
3.17.5
3.17.4
3.17.3
3.17.2
3.17.1
3.17.0
3.16.0
3.15.0
3.14.0
3.13.0
3.12.2
3.12.1
3.12.0
3.11.0
A compiler for Google protocol buffer definitions files for Erlang.
Current section
Files
Jump to
Current section
Files
include/gpb.hrl
-ifndef(gpb_hrl).
-define(gpb_hrl, true).
-type gpb_field_type() :: %% Erlang type Comment
'int32' | 'int64' % integer() variable-length encoded
| 'uint32' | 'uint64' % integer() variable-length encoded
| 'sint32' | 'sint64' % integer() variable-length zig-zag encoded
| 'fixed32' | 'fixed64' % integer() always 4 | 8 bytes on wire
| 'sfixed32' | 'sfixed64' % integer() always 4 | 8 bytes on wire
| 'bool' % true | false
| 'float' | 'double' % float()
| 'string' % string() UTF-8 encoded
| 'bytes' % binary()
| {'enum',atom()} % atom() the enum literal is the atom
| {'msg',atom()}. % record() the msg name is record name
%% The following two definitions (`gpb_field' and `gpb_rpc') are to
%% avoid clashes with other code, since the `field' and `rpc' are
%% really too general names, they should have been prefixed.
%%
%% Unfortunately, they are already part of the API, so they can't
%% be changed without breaking backwards compatibility.
%% (They appear as parameters or retrun values for functions in `gpb'
%% in generated code.)
%%
%% In case a clash, it is possible to redefine the name locally.
%% The recommendation is to redefine them with prefix, ie to `gpb_field'
%% and `gpb_rpc', since this is what they will change to in some future.
%%
-ifdef(gpb_field_record_name).
-define(gpb_field, ?gpb_field_record_name).
-else.
-define(gpb_field, field). %% odd definition is due to backwards compatibility
-endif.
-ifdef(gpb_rpc_record_name).
-define(gpb_rpc, ?gpb_rpc_record_name).
-else.
-define(gpb_rpc, rpc). %% odd definition is due to backwards compatibility
-endif.
-record(?gpb_field, % NB: record name is (currently) `field' (not `gpb_field')!
{name :: atom(),
fnum :: integer(),
rnum :: pos_integer(), %% field number in the record
type :: gpb_field_type() |
{ref, term()} | %% intermediary, during parsing
{msg, list()} | %% intermediary, during parsing
{enum, list()}, %% intermediary, during parsing
occurrence :: 'required' | 'optional' | 'repeated',
opts = [] :: [term()]
}).
-record(?gpb_rpc, % NB: record name is (currently) `rpc' (not `gpb_rpc')!
{name :: atom(),
input,
output
}).
-record(gpb_oneof,
{name :: atom(),
rnum :: pos_integer(), %% field number in the record
fields :: [#?gpb_field{}] %% all fields have the same rnum
}).
-endif.