hprotoc-2.1.2: Parse Google Protocol Buffer specifications

Safe HaskellNone
LanguageHaskell98

Text.ProtocolBuffers.ProtoCompile.Resolve

Description

This huge module handles the loading and name resolution. The loadProto command recursively gets all the imported proto files. The makeNameMaps command makes the translator from proto name to Haskell name. Many possible errors in the proto data are caught and reported by these operations.

hprotoc will actually resolve more unqualified imported names than Google's protoc which requires more qualified names. I do not have the obsessive nature to fix this.

Synopsis

Documentation

loadProto :: [LocalFP] -> LocalFP -> IO (Env, [FileDescriptorProto]) Source

Given a list of paths to search, loads proto files by looking for them in the file system.

loadCodeGenRequest :: CodeGeneratorRequest -> LocalFP -> (Env, [FileDescriptorProto]) Source

data Env Source

By construction Env is 0 or more Local Entity namespaces followed by 1 or more Global TopLevel namespaces (self and imported files). Entities in first Global TopLevel namespace can refer to each other and to Entities in the list of directly imported TopLevel namespaces only.

Constructors

Local [IName String] EMap Env 
Global TopLevel [TopLevel] 

Instances

data TopLevel Source

TopLevel corresponds to all items defined in a .proto file. This includes the FileOptions since this will be consulted when generating the Haskell module names, and the imported files are only known through their TopLevel data.

Instances

data PackageID a Source

Constructors

PackageID 

Fields

_getPackageID :: a
 
NoPackageID 

Fields

_getNoPackageID :: a
 

Instances

newtype LocalFP Source

Constructors

LocalFP 

Fields

unLocalFP :: FilePath
 

newtype CanonFP Source

Constructors

CanonFP 

Fields

unCanonFP :: FilePath