Packages
gpb
4.3.2
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_scalar() ::
int32 | int64 | uint32 | uint64 | sint32 | sint64
| fixed32 | fixed64 | sfixed32 | sfixed64
| bool
| float | double
| string
| bytes.
-type gpb_map_key() :: % "any scalar type except floating point types and bytes"
int32 | int64 | uint32 | uint64 | sint32 | sint64
| fixed32 | fixed64 | sfixed32 | sfixed64
| bool
| string.
%% It is not possible to have maps in maps directly,
%% so this type is any gpb_field_type() except {map,K,V}.
-type gpb_map_value() ::
gpb_scalar()
| {enum,atom()}
| {msg,atom()}.
-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
% | binary() iff option `strings_as_binaries'
| bytes % binary()
| {enum,atom()} % atom() the enum literal is the atom
| {msg,atom()} % record() the message name is record name
% | map() iff option `maps'
| {group,atom()} % record() name is <msg name>_<field name>
% | map() iff option `maps'
| {map,gpb_map_key(),gpb_map_value()}. % [{K,V}] | map()
%% An intermediary type temporarily used internally within gpb during parsing,
%% neither returned from gpb, nor accepted as input go gpb.
-type gpb_internal_intermediary_ref() ::
{ref, term()} |
{msg, list()} |
{group, list()} |
{enum, list()}.
-type gpb_internal_intermediary_map_ref() ::
{map, gpb_map_key(), gpb_map_value() | gpb_internal_intermediary_ref()}.
%% 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 return 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()
| undefined, % temporarily in some phases
fnum :: integer()
| undefined, % temporarily in some phases
rnum :: pos_integer() % field number in the record
| undefined, % temporarily, during parsing
type :: gpb_field_type() |
gpb_internal_intermediary_ref() |
gpb_internal_intermediary_map_ref()
| undefined, % temporarily in some phases
occurrence :: 'required' | 'optional' | 'repeated'
| undefined, % temporarily in some phases
opts = [] :: [term()]
}).
-record(gpb_oneof,
{name :: atom()
| undefined, % temporarily in some phases
rnum :: pos_integer() % field number in the record
| undefined, % temporarily, during parsing
fields :: [#?gpb_field{}] % all fields have the same rnum
| undefined % temporarily in some phases
}).
-record(?gpb_rpc, % NB: record name is (currently) `rpc' (not `gpb_rpc')!
{name :: atom()
| undefined, % temporarily in some phases
input,
output,
input_stream :: boolean()
| undefined, % temporarily in some phases
output_stream :: boolean()
| undefined, % temporarily in some phases
opts :: [term()]
| undefined % temporarily in some phases
}).
-endif.