Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module takes care of collecting all the definitions in a .proto file and assigning Haskell names to all of the defined things (messages, enums and field names).
- type Env n = Map Text (Definition n)
- data Definition n
- = Message (MessageInfo n)
- | Enum (EnumInfo n)
- data MessageInfo n = MessageInfo {}
- data FieldInfo = FieldInfo {}
- data EnumInfo n = EnumInfo {
- enumName :: n
- enumDescriptor :: EnumDescriptorProto
- enumValues :: [EnumValueInfo n]
- data EnumValueInfo n = EnumValueInfo {}
- qualifyEnv :: ModuleName -> Env Name -> Env QName
- unqualifyEnv :: Env Name -> Env QName
- collectDefinitions :: FileDescriptorProto -> Env Name
- definedFieldType :: FieldDescriptorProto -> Env QName -> Definition QName
Documentation
type Env n = Map Text (Definition n) Source #
Env
contains a mapping of proto names (as specified in the .proto file)
to Haskell names. The keys are fully-qualified names, for example,
".package.Message.Submessage". (The protocol_compiler tool emits all
message field types in this form, even if they refer to local definitions.)
The type n
can be either a Name
(when talking about definitions within
the current file) or a (qualified) QName
(when talking about definitions
either from this or another file).
data MessageInfo n Source #
All the information needed to define or use a proto message type.
MessageInfo | |
|
Information about a single field of a proto message.
FieldInfo | |
|
All the information needed to define or use a proto enum type.
EnumInfo | |
|
qualifyEnv :: ModuleName -> Env Name -> Env QName Source #
collectDefinitions :: FileDescriptorProto -> Env Name Source #
Collect all the definitions in the given file (including definitions nested in other messages), and assign Haskell names to them.
definedFieldType :: FieldDescriptorProto -> Env QName -> Definition QName Source #
Look up the type definition for a given field.