MessageType
), creating a Prolog term.
Protoc
must have been run (with the --swipl_out=
option and the resulting
top-level _pb.pl
file loaded. For more details, see the "protoc" section of the
overview documentation.
Fails if the message can't be parsed or if the appropriate meta-data from protoc
hasn't been loaded.
All fields that are omitted from the WireCodes
are set to their
default values (typically the empty string or 0, depending on the
type; or []
for repeated groups). There is no way of testing
whether a value was specified in WireCodes
or given its default
value (that is, there is no equivalent of the Python
implementation's =HasField`). Optional embedded messages and groups
do not have any default value -- you must check their existence by
using get_dict/3 or similar. If a field is part of a "oneof" set,
then none of the other fields is set. You can determine which field
had a value by using get_dict/3.
WireCodes | - Wire format of the message from e.g., read_stream_to_codes/2.
(The stream should have options encoding(octet) and type(binary) ,
either as options to read_file_to_codes/3 or by calling set_stream/2
on the stream to read_stream_to_codes/2.) |
MessageType | - Fully qualified message name (from the .proto file's package and message ).
For example, if the package is google.protobuf and the
message is FileDescriptorSet , then you would use
'.google.protobuf.FileDescriptorSet' or 'google.protobuf.FileDescriptorSet' .
If there's no package name, use e.g.: 'MyMessage or '.MyMessage' .
You can see the packages by looking at
protobufs:proto_meta_package(Pkg,File,_)
and the message names and fields by
protobufs:proto_meta_field_name('.google.protobuf.FileDescriptorSet',
FieldNumber, FieldName, FqnName) (the initial '.' is not optional for these facts,
only for the top-level name given to protobuf_serialize_to_codes/3). |
Term | - The generated term, as nested dicts. |
version_error(Module-Version)
you need to recompile the Module
with a newer version of protoc
.library(protobufs)
: Google's Protocol Buffers.proto
extensions.map
fields don't get special treatment (but see protobuf_map_pairs/3).true
and value_string_as
(similar to json_read_dict/3)