compiletime

package
v0.0.0-...-81aed03 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 22, 2024 License: MIT Imports: 28 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewCommand

func NewCommand(cfg *Config, namerCfg *NamerConfig) *cli.Command

Types

type CodeTransformerBackend

type CodeTransformerBackend interface {
	AddFunction(decl *ast.FuncDecl, resolver TypeResolver, id runtime.FuncProcId) (err error)
	Reset()
	Emitter
}

CodeTransformerBackend generate code for the backend i.e. the library executing the foreign function body (in the foreign programming language)

type CodeTransformerBackendPresenterCpp

type CodeTransformerBackendPresenterCpp struct {
	// contains filtered or unexported fields
}

func NewCodeTransformerBackendPresenterCpp

func NewCodeTransformerBackendPresenterCpp(namer *Namer) *CodeTransformerBackendPresenterCpp

func (*CodeTransformerBackendPresenterCpp) AddFunction

func (inst *CodeTransformerBackendPresenterCpp) AddFunction(decl *ast.FuncDecl, resolver TypeResolver, id runtime.FuncProcId) (err error)

func (*CodeTransformerBackendPresenterCpp) Emit

func (inst *CodeTransformerBackendPresenterCpp) Emit(out io.Writer) (n int, err error)

func (*CodeTransformerBackendPresenterCpp) Reset

func (inst *CodeTransformerBackendPresenterCpp) Reset()

type CodeTransformerFrontend

type CodeTransformerFrontend interface {
	AddFile(fset *token.FileSet, file *ast.File, resolver TypeResolver, i int, nFiles int, idResolver IdResolver) (err error)
	Reset()
	Emitter
}

CodeTransformerFrontend generate code for the frontend i.e. the library invoking the foreign functions

type CodeTransformerFrontendGo

type CodeTransformerFrontendGo struct {
	// contains filtered or unexported fields
}

func NewCodeTransformerFrontendGo

func NewCodeTransformerFrontendGo(namer *Namer, goCodeProlog string) *CodeTransformerFrontendGo

func (*CodeTransformerFrontendGo) AddFile

func (inst *CodeTransformerFrontendGo) AddFile(fset *token.FileSet, file *ast.File, resolver TypeResolver, i int, nFiles int, idResolver IdResolver) (err error)

func (*CodeTransformerFrontendGo) Emit

func (inst *CodeTransformerFrontendGo) Emit(out io.Writer) (n int, err error)

func (*CodeTransformerFrontendGo) NextFuncProcIdOffset

func (inst *CodeTransformerFrontendGo) NextFuncProcIdOffset() uint32

func (*CodeTransformerFrontendGo) Reset

func (inst *CodeTransformerFrontendGo) Reset()

type Config

type Config struct {
	GoCodeProlog      string
	IdlBuildTag       string
	IdlPackagePattern string
	GoOutputFile      string
	CppOutputFile     string
	FuncProcIdOffset  uint32
	// contains filtered or unexported fields
}

func (*Config) FromContext

func (inst *Config) FromContext(nameTransf config.NameTransformFunc, ctx *cli.Context) (nMessages int)

func (*Config) ToCliFlags

func (inst *Config) ToCliFlags(nameTransf config.NameTransformFunc, envVarNameTransf config.NameTransformFunc) []cli.Flag

func (*Config) Validate

func (inst *Config) Validate(force bool) (nMessages int)

type Emitter

type Emitter interface {
	Emit(out io.Writer) (n int, err error)
}

type IDLDriver

type IDLDriver interface {
	DriveBackend(generator CodeTransformerBackend) (err error)
	DriveFrontend(generator CodeTransformerFrontend) (err error)
}

IDLDriver convert interface description language to go ast.FuncDecl ast nodes

type IDLDriverGoFile

type IDLDriverGoFile struct {
	// contains filtered or unexported fields
}

func NewIDLDriverGoFile

func NewIDLDriverGoFile(idlBuildTag string, packagePattern string, idOffset runtime.FuncProcId) (inst *IDLDriverGoFile, err error)

func (*IDLDriverGoFile) DriveBackend

func (inst *IDLDriverGoFile) DriveBackend(generator CodeTransformerBackend) (err error)

func (*IDLDriverGoFile) DriveFrontend

func (inst *IDLDriverGoFile) DriveFrontend(generator CodeTransformerFrontend) (err error)

func (*IDLDriverGoFile) FuncDeclToId

func (inst *IDLDriverGoFile) FuncDeclToId(decl *ast.FuncDecl) runtime.FuncProcId

func (*IDLDriverGoFile) ResolveBasicType

func (inst *IDLDriverGoFile) ResolveBasicType(expr ast.Expr) (typeName string, castType string, err error)

type IdResolver

type IdResolver interface {
	FuncDeclToId(decl *ast.FuncDecl) runtime.FuncProcId
}

type Namer

type Namer struct {
	// contains filtered or unexported fields
}

func NewNamer

func NewNamer(cfg *NamerConfig) *Namer

func (*Namer) GoTypeNameToCppTypeName

func (inst *Namer) GoTypeNameToCppTypeName(name string) (r string, err error)

func (*Namer) GoTypeNameToRecvExprCpp

func (inst *Namer) GoTypeNameToRecvExprCpp(name string) (r string, err error)

func (*Namer) GoTypeNameToSendExprCpp

func (inst *Namer) GoTypeNameToSendExprCpp(name string, varname string) (r string, err error)

func (*Namer) GoTypeNameToSendRecvFuncNameSuffix

func (inst *Namer) GoTypeNameToSendRecvFuncNameSuffix(name string) (r string, err error)

type NamerConfig

type NamerConfig struct {
	RuneCppType string
	// contains filtered or unexported fields
}

func (*NamerConfig) FromContext

func (inst *NamerConfig) FromContext(nameTransf config.NameTransformFunc, ctx *cli.Context) (nMessages int)

func (*NamerConfig) ToCliFlags

func (inst *NamerConfig) ToCliFlags(nameTransf config.NameTransformFunc, envVarNameTransf config.NameTransformFunc) []cli.Flag

func (*NamerConfig) Validate

func (inst *NamerConfig) Validate(force bool) (nMessages int)

type TypeResolver

type TypeResolver interface {
	ResolveBasicType(expr ast.Expr) (typeName string, castType string, err error)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL