Documentation ¶
Index ¶
- Variables
- type CFileGenerator
- type FileGenerator
- type Generator
- func (g *Generator) AddFilters(filters []types.FilterMatcher)
- func (g *Generator) AddPostprocessors(ppMap map[string][]Postprocessor)
- func (g *Generator) AddProcessConverters(processors []typeconv.ConversionProcessor)
- func (g *Generator) ApplyPreprocessors(preprocs []types.Preprocessor)
- func (g *Generator) DynamicLinkNamespaces(versionedNamespaces []string)
- func (g *Generator) Filters() []types.FilterMatcher
- func (g *Generator) Logln(lvl logger.Level, v ...interface{})
- func (g *Generator) ModPath(n *gir.Namespace) string
- func (g *Generator) NamespaceLinkMode(namespace *gir.Namespace) types.LinkMode
- func (g *Generator) ProcessConverter(converter *typeconv.Converter)
- func (g *Generator) Repositories() gir.Repositories
- func (g *Generator) SetDefaultLinkMode(linkMode types.LinkMode)
- func (g *Generator) UseNamespace(namespace, version string) *NamespaceGenerator
- type GoFileGenerator
- func (f *GoFileGenerator) CIncludes() []string
- func (f *GoFileGenerator) Generate() ([]byte, error)
- func (f *GoFileGenerator) Header() *file.Header
- func (f *GoFileGenerator) IsEmpty() bool
- func (f *GoFileGenerator) Logln(lvl logger.Level, v ...interface{})
- func (f *GoFileGenerator) Name() string
- func (f *GoFileGenerator) Pen() *pen.Pen
- func (f *GoFileGenerator) Pkgconfig() []string
- type NamespaceGenerator
- func (n *NamespaceGenerator) AddPostprocessors(pps []Postprocessor)
- func (n *NamespaceGenerator) CanGenerate(r *types.Resolved) bool
- func (n *NamespaceGenerator) File(filename string) (*GoFileGenerator, bool)
- func (n *NamespaceGenerator) FileWriter(info cmt.InfoFields, export bool) generators.FileWriter
- func (n *NamespaceGenerator) Generate() (map[string][]byte, error)
- func (n *NamespaceGenerator) LinkMode() types.LinkMode
- func (n *NamespaceGenerator) Logln(lvl logger.Level, v ...interface{})
- func (n *NamespaceGenerator) MakeFile(filename string) *GoFileGenerator
- func (n *NamespaceGenerator) Namespace() *gir.NamespaceFindResult
- func (n *NamespaceGenerator) Pkgconfig() []string
- func (n *NamespaceGenerator) Rename(src, dst string) error
- func (n *NamespaceGenerator) SetLinkMode(mode types.LinkMode)
- type Opts
- type Postprocessor
Constants ¶
This section is empty.
Variables ¶
var DefaultLinkMode = types.DynamicLinkMode // types.RuntimeLinkMode
DefaultLinkMode is the default link mode to be used for all constructed Generators.
var DefaultOpts = Opts{ LogLevel: logger.Skip, }
DefaultOpts contains default options.
Functions ¶
This section is empty.
Types ¶
type CFileGenerator ¶
type CFileGenerator struct { *NamespaceGenerator // contains filtered or unexported fields }
CFileGenerator creates a new C file generator.
func NewCFileGenerator ¶
func NewCFileGenerator(n *NamespaceGenerator, name string) *CFileGenerator
NewCFileGenerator creates as new C file generator.
func (*CFileGenerator) CIncludes ¶
func (f *CFileGenerator) CIncludes() []string
CIncludes returns the list of C includes at the top of the file.
func (*CFileGenerator) Generate ¶
func (f *CFileGenerator) Generate() ([]byte, error)
Generate implements FileGenerator.
func (*CFileGenerator) Header ¶
func (f *CFileGenerator) Header() *file.Header
Header returns the C file generator's headers.
func (*CFileGenerator) IsEmpty ¶
func (f *CFileGenerator) IsEmpty() bool
IsEmpty returns true if the file is empty.
func (*CFileGenerator) Pen ¶
func (f *CFileGenerator) Pen() *pen.Pen
Pen returns the C file generator's writer.
type FileGenerator ¶
type FileGenerator interface { generators.FileGenerator generators.FileWriter Generate() ([]byte, error) IsEmpty() bool Name() string }
FileGenerator describes any file that can be generated.
type Generator ¶
Generator is a big generator that manages multiple repositories.
func NewGenerator ¶
func NewGenerator(repos gir.Repositories, modPath types.ModulePathFunc) *Generator
NewGenerator creates a new generator with sane defaults.
func NewGeneratorOpts ¶
func NewGeneratorOpts(repos gir.Repositories, modPath types.ModulePathFunc, opts Opts) *Generator
NewGeneratorOpts creates a new generator with options.
func (*Generator) AddFilters ¶
func (g *Generator) AddFilters(filters []types.FilterMatcher)
AddFilters adds the given list of filters.
func (*Generator) AddPostprocessors ¶
func (g *Generator) AddPostprocessors(ppMap map[string][]Postprocessor)
AddPostprocessor registers the given postprocessors inside a map that has keys matching the namespace.
func (*Generator) AddProcessConverters ¶
func (g *Generator) AddProcessConverters(processors []typeconv.ConversionProcessor)
AddProcessConverters adds the given list of conversion processors.
func (*Generator) ApplyPreprocessors ¶
func (g *Generator) ApplyPreprocessors(preprocs []types.Preprocessor)
AddPreprocessors applies the given list of preprocessors.
func (*Generator) DynamicLinkNamespaces ¶
DynamicLinkNamespaces overrides the default link mode for the given namespaces to be DynamicLinkMode. If an unknown versioned namespace is given, then the function panics.
func (*Generator) Filters ¶
func (g *Generator) Filters() []types.FilterMatcher
Filters returns the generator's list of type filters.
func (*Generator) ModPath ¶
ModPath creates an import path from the user's ModulePathFunc given into the constructor.
func (*Generator) NamespaceLinkMode ¶
NamespaceLinkMode returns the link mode for the given namespace.
func (*Generator) ProcessConverter ¶
ProcessConverter satisfies the typeconv.ConversionProcessor interface.
func (*Generator) Repositories ¶
func (g *Generator) Repositories() gir.Repositories
Repositories returns the generator's repositories.
func (*Generator) SetDefaultLinkMode ¶
SetDefaultLinkMode sets the default link mode.
func (*Generator) UseNamespace ¶
func (g *Generator) UseNamespace(namespace, version string) *NamespaceGenerator
UseNamespace creates a new namespace generator using the given namespace.
type GoFileGenerator ¶
type GoFileGenerator struct { *NamespaceGenerator BuildTags []string // go:build lines, joined by AND (&&) Packages []string // extra // contains filtered or unexported fields }
GoFileGenerator is a file generator.
func NewGoFileGenerator ¶
func NewGoFileGenerator(n *NamespaceGenerator, name string, isRoot bool) *GoFileGenerator
NewGoFileGenerator creates a new empty GoFileGenerator instance.
func (*GoFileGenerator) CIncludes ¶
func (f *GoFileGenerator) CIncludes() []string
CIncludes returns this file's sorted C includes, including the repository's C includes.
func (*GoFileGenerator) Generate ¶
func (f *GoFileGenerator) Generate() ([]byte, error)
Generate generates the final file content, completed with gofmt.
func (*GoFileGenerator) Header ¶
func (f *GoFileGenerator) Header() *file.Header
Header returns the current file's header.
func (*GoFileGenerator) IsEmpty ¶
func (f *GoFileGenerator) IsEmpty() bool
IsEmpty returns true if the file is empty.
func (*GoFileGenerator) Logln ¶
func (f *GoFileGenerator) Logln(lvl logger.Level, v ...interface{})
func (*GoFileGenerator) Name ¶
func (f *GoFileGenerator) Name() string
Name returns the current file's name.
func (*GoFileGenerator) Pen ¶
func (f *GoFileGenerator) Pen() *pen.Pen
Pen returns the current file's writing pen.
func (*GoFileGenerator) Pkgconfig ¶
func (f *GoFileGenerator) Pkgconfig() []string
Pkgconfig returns the current repository's pkg-config names.
type NamespaceGenerator ¶
type NamespaceGenerator struct { *Generator PkgPath string PkgName string PkgVersion string Files map[string]FileGenerator // contains filtered or unexported fields }
NamespaceGenerator manages generation of a namespace. A namespace contains various files, which are created using the FileWriter method.
func NewNamespaceGenerator ¶
func NewNamespaceGenerator(g *Generator, n *gir.NamespaceFindResult) *NamespaceGenerator
NewNamespaceGenerator creates a new NamespaceGenerator from the given generator and namespace.
func (*NamespaceGenerator) AddPostprocessors ¶
func (n *NamespaceGenerator) AddPostprocessors(pps []Postprocessor)
AddPostprocessors adds the given list of postprocessors.
func (*NamespaceGenerator) CanGenerate ¶
func (n *NamespaceGenerator) CanGenerate(r *types.Resolved) bool
CanGenerate checks if a type can be generated or not.
func (*NamespaceGenerator) File ¶
func (n *NamespaceGenerator) File(filename string) (*GoFileGenerator, bool)
File gets an existing Go file but returns false if no such file exists. It's useful for postprocessors to check if generation is working as intended. If SingleFile is true, then File will always return the same file.
func (*NamespaceGenerator) FileWriter ¶
func (n *NamespaceGenerator) FileWriter(info cmt.InfoFields, export bool) generators.FileWriter
FileWriter returns the respective file writer from the given InfoFields.
func (*NamespaceGenerator) Generate ¶
func (n *NamespaceGenerator) Generate() (map[string][]byte, error)
Generate generates everything in the current namespace into files. The returned map maps the filename to the raw file content.
func (*NamespaceGenerator) LinkMode ¶
func (n *NamespaceGenerator) LinkMode() types.LinkMode
LinkMode implements FileGenerator.
func (*NamespaceGenerator) Logln ¶
func (n *NamespaceGenerator) Logln(lvl logger.Level, v ...interface{})
func (*NamespaceGenerator) MakeFile ¶
func (n *NamespaceGenerator) MakeFile(filename string) *GoFileGenerator
MakeFile makes a new GoFileGenerator for the given filename or returns an existing one.
func (*NamespaceGenerator) Namespace ¶
func (n *NamespaceGenerator) Namespace() *gir.NamespaceFindResult
Namespace returns the generator's namespace that includes the repository it's in.
func (*NamespaceGenerator) Pkgconfig ¶
func (n *NamespaceGenerator) Pkgconfig() []string
Pkgconfig returns the current repository's pkg-config names.
func (*NamespaceGenerator) Rename ¶
func (n *NamespaceGenerator) Rename(src, dst string) error
Rename renames a file from src to dst. If src does not exist, then it will return an error.
func (*NamespaceGenerator) SetLinkMode ¶
func (n *NamespaceGenerator) SetLinkMode(mode types.LinkMode)
SetLinkMode sets the link mode for the current namespace and all its files. The default is RuntimeLinkMode.
type Opts ¶
type Opts struct { // LogLevel is defaulted to Skip, unless GIR_VERBOSE=1, then it's Debug. LogLevel logger.Level // SingleFile, if true, will make all NamespaceGenerators generate a single // output file per package instead of correlating it to the source file. SingleFile bool }
Opts contains generator options.
type Postprocessor ¶
type Postprocessor func(n *NamespaceGenerator) error
Postprocessor describes a processor function that modifies a namespace. It is called right before files are finalized within the namespace generator.
Directories ¶
Path | Synopsis |
---|---|
Package cmt provides functions that parse and render GIR comments into nice and conventional Go comments.
|
Package cmt provides functions that parse and render GIR comments into nice and conventional Go comments. |
Package file provides per-file state helpers, such as for tracking imports.
|
Package file provides per-file state helpers, such as for tracking imports. |
callable
Package callable provides a generic callable generator.
|
Package callable provides a generic callable generator. |
iface
Package iface provides an interface generator.
|
Package iface provides an interface generator. |
Package gotmpl provides abstractions around text/template to better generate Go files.
|
Package gotmpl provides abstractions around text/template to better generate Go files. |
Package logger provides abstractions over girgen's logging.
|
Package logger provides abstractions over girgen's logging. |
Package strcases provides helper functions to convert between string cases, such as Pascal Case, snake_case and Go's Mixed Caps, along with various special cases.
|
Package strcases provides helper functions to convert between string cases, such as Pascal Case, snake_case and Go's Mixed Caps, along with various special cases. |
typeconv
Package typeconv provides conversions between C and Go types.
|
Package typeconv provides conversions between C and Go types. |