View Source Protobuf.DSL (protobuf v0.14.1)

Summary

Functions

Define "extend" for a message(the first argument module).

Define extensions range in the message module to allow extensions for this module.

Define a field for the message.

Define oneof in the message module.

Functions

Link to this macro

extend(mod, name, fnum, options)

View Source (macro)

Define "extend" for a message(the first argument module).

Link to this macro

extensions(ranges)

View Source (macro)

Define extensions range in the message module to allow extensions for this module.

Extension ranges are defined as a list of tuples {start, end}, where each tuple is an exclusive range starting and start and ending at end (the equivalent of start..end-1 in Elixir).

To simulate the Protobuf max keyword, you can use Protobuf.Extension.max/0.

Examples

These Protobuf definition:

message Foo {
  extensions 1, 10 to 20, 100 to max;
}

Would be translated in Elixir to:

extensions [{1, 2}, {10, 21}, {100, Protobuf.Extension.max()}]
Link to this macro

field(name, field_number, options \\ [])

View Source (macro)

Define a field for the message.

Corresponds to Protobuf declarations such as:

string query = 1;

or more generally

<type> <name> = <field_number>;

Arguments

  • name — must be an atom representing the name of the field.
  • field_number — must be an integer representing the field number.
  • options - a keyword list of options, see below.

Options

  • :proto3_optional - boolean representing whether the field is optional with the proto3 syntax. See the documentation

  • :type - atom representing the type of the field.

  • :repeated - boolean representing whether the field is repeated.

  • :optional - boolean representing whether the field is optional.

  • :required - boolean representing whether the field is required.

  • :enum - boolean representing whether the field is a possible value of an enum.

  • :map - boolean representing whether the field is a part of a map.

  • :default - the default value of the field. Must be a valid Elixir term at compile time, that can be encoded with Protobuf and matches with the type of the field.

  • :packed - boolean representing whether the field is packed.

  • :deprecated - boolean representing whether the field is deprecated.

  • :json_name - if present, specifies the name of the field when using the JSON mapping (see Protobuf.JSON). If not present, the default mapping will be used.

Link to this function

on_def(env, arg2, arg3, arg4, arg5, arg6)

View Source
Link to this macro

oneof(name, index)

View Source (macro)

Define oneof in the message module.