builder

package
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Aug 4, 2022 License: MIT Imports: 11 Imported by: 8

Documentation

Index

Examples

Constants

View Source
const (
	ANY_MODE = iota
	READ_MODE
	WRITE_MODE
	RW_MODE
)

Variables

This section is empty.

Functions

func AddAutoAssignExists

func AddAutoAssignExists(b Builder, lhs *Variable)

use exists variable assign to var

func AddCheckReturn

func AddCheckReturn(b Builder, cond ast.Expr, ev *Variable)

func AddErrorReturn

func AddErrorReturn(b Builder, ev *Variable)

func AddReturnStmt

func AddReturnStmt(b Builder, results *VariableList)

func AddSuccessReturn

func AddSuccessReturn(b Builder)

func AppendExpr

func AppendExpr(list ast.Expr, item ast.Expr) ast.Expr

func CamelString

func CamelString(src string) string

camel string, xx_yy to xxYy

func CondExpr

func CondExpr(op token.Token, exprs ...ast.Expr) ast.Expr

func DotExpr

func DotExpr(x ast.Expr, dot ast.Expr) ast.Expr

func FollowTPaths

func FollowTPaths(bd Builder, srcV, dstV *Variable, ev *Variable, paths []*parser.TPath)

func GenNameFromType

func GenNameFromType(typ ast.Expr) string

func GetStructHolder

func GetStructHolder(t parser.Type) parser.Type

func IncreaseName

func IncreaseName(name string) string

func LenExpr

func LenExpr(a ast.Expr) ast.Expr

func NewAstIdent

func NewAstIdent(name string) *ast.Ident

func NewSelectorExpr

func NewSelectorExpr(x ast.Expr, sel *ast.Ident) *ast.SelectorExpr

func StructAssign

func StructAssign(bd Builder, srcV, dstV *Variable, srcFields, dstFields *FieldList, knownTpaths []*parser.TPath)
Example
// fmt.Println(code)
p := parser.NewParser()

file := p.ParseFileContent("test", code)
pkg := parser.NewPackage(p, "fake", "./fake.go", "", []*parser.File{file})
file = pkg.Files[0]

fileBuilder := NewFile(nil, file)

tx := file.ReduceTypeSrc("X")
// ty := file.ReduceTypeSrc("Y")
ta := file.ReduceTypeSrc("A")
tb := file.ReduceTypeSrc("B")
tc := file.ReduceTypeSrc("C")

var fnt parser.Type
var bd *FuncBuilder
var src *Variable
var dst *Variable
var assignBuilder *StructAssignBuilder

//A => B
fnt = fakeFunctionType(ta, tb, "test1")
bd = NewFunction(fileBuilder, nil, fnt, nil)
src = GetVariable(bd, ta, READ_MODE, Scope_Function)
assignBuilder = NewStructAssign(bd, "pc", nil, nil)
dst = NewVariable(tb).AutoName().WriteOnly()
_ = assignBuilder.TryAssign(src, dst)
bd.Add(assignBuilder)
AddSuccessReturn(bd)
fmt.Printf("%s\n", string(bd.Bytes()))

//A => C
log.Printf("test2")
fnt = fakeFunctionType(ta, tc, "test2")
bd = NewFunction(fileBuilder, nil, fnt, nil)
src = GetVariable(bd, ta, READ_MODE, Scope_Function)
assignBuilder = NewStructAssign(bd, "pc", nil, nil)
dst = NewVariable(tc).AutoName().WriteOnly()
_ = assignBuilder.TryAssign(src, dst)
bd.Add(assignBuilder)
AddSuccessReturn(bd)
fmt.Printf("%s\n", string(bd.Bytes()))

//A => x
log.Printf("test3")
fnt = fakeFunctionType(ta, tx, "test3")
bd = NewFunction(fileBuilder, nil, fnt, nil)
src = GetVariable(bd, ta, READ_MODE, Scope_Function)
assignBuilder = NewStructAssign(bd, "pc", nil, nil)
dst = NewVariable(tx).AutoName().WriteOnly()
_ = assignBuilder.TryAssign(src, dst)
bd.Add(assignBuilder)
AddSuccessReturn(bd)
fmt.Printf("%s\n", string(bd.Bytes()))

//x => A
fnt = fakeFunctionType(tx, ta, "test4")
bd = NewFunction(fileBuilder, nil, fnt, nil)
src = GetVariable(bd, tx, READ_MODE, Scope_Function)
assignBuilder = NewStructAssign(bd, "pc", nil, nil)
dst = NewVariable(ta).AutoName().WriteOnly()
_ = assignBuilder.TryAssign(src, dst)
bd.Add(assignBuilder)
AddSuccessReturn(bd)
fmt.Printf("%s\n", string(bd.Bytes()))

//x => **A
srcType := parser.TypeWithPointer(parser.TypeWithPointer(ta))
dstType := tx
fnt = fakeFunctionType(dstType, srcType, "test5")
bd = NewFunction(fileBuilder, nil, fnt, nil)
src = GetVariable(bd, dstType, READ_MODE, Scope_Function)
assignBuilder = NewStructAssign(bd, "pc", nil, nil)
dst = NewVariable(srcType).AutoName().WriteOnly()
_ = assignBuilder.TryAssign(src, dst)
bd.Add(assignBuilder)
AddSuccessReturn(bd)
fmt.Printf("%s\n", string(bd.Bytes()))

//*x => **B
srcType = parser.TypeWithPointer(parser.TypeWithPointer(tb))
dstType = parser.TypeWithPointer(tx)
fnt = fakeFunctionType(dstType, srcType, "test6")
bd = NewFunction(fileBuilder, nil, fnt, nil)
src = GetVariable(bd, dstType, READ_MODE, Scope_Function)
assignBuilder = NewStructAssign(bd, "pc", nil, nil)
dst = NewVariable(srcType).AutoName().WriteOnly()
_ = assignBuilder.TryAssign(src, dst)
bd.Add(assignBuilder)
AddSuccessReturn(bd)
fmt.Printf("%s\n", string(bd.Bytes()))
Output:

func test1(t A) (B, error) {
	b := B{}
	if t.PX != nil {
		b.TheX = *t.PX
	}
	if t.PY != nil {
		b.TheY = *t.PY
	}
	return b, nil
}
func test2(t A) (C, error) {
	c := C{}
	if t.PY != nil {
		c.Y = *t.PY
	}
	if t.PX != nil {
		x := *t.PX
		c.T = int(x)
	}
	return c, nil
}
func test3(t A) (X, error) {
	var x X
	if t.PX != nil {
		x = *t.PX
	}
	return x, nil
}
func test4(t X) (A, error) {
	a := A{}
	a.PX = &t
	return a, nil
}
func test5(t X) (**A, error) {
	a := &A{}
	a.PX = &t
	a1 := &a
	return a1, nil
}
func test6(t *X) (**B, error) {
	b := &B{}
	if t != nil {
		b.TheX = *t
	}
	b1 := &b
	return b1, nil
}

func TryDirectAssign

func TryDirectAssign(bd Builder, srcV, dstV *Variable, ev *Variable, knownTpaths []*parser.TPath) bool

func TypeConversionExpr

func TypeConversionExpr(typeExpr ast.Expr, val ast.Expr) ast.Expr

func VariableName

func VariableName(name string) string

Types

type BlockBuilder

type BlockBuilder struct {
	Body *ast.BlockStmt
	// contains filtered or unexported fields
}

func (*BlockBuilder) Add

func (b *BlockBuilder) Add(ab Builder)

func (*BlockBuilder) Block

func (b *BlockBuilder) Block() *BlockBuilder

func (*BlockBuilder) Bytes

func (b *BlockBuilder) Bytes() []byte

func (BlockBuilder) File

func (b BlockBuilder) File() *parser.File

func (BlockBuilder) Outer

func (b BlockBuilder) Outer() Builder

func (BlockBuilder) Package

func (b BlockBuilder) Package() *parser.Package

func (*BlockBuilder) StmtList

func (b *BlockBuilder) StmtList() []ast.Stmt

func (*BlockBuilder) String

func (b *BlockBuilder) String() string

func (BlockBuilder) Variables

func (b BlockBuilder) Variables() *VariableList

type BufferBuilder

type BufferBuilder interface {
	Builder
}

type Builder

type Builder interface {
	Outer() Builder
	Variables() *VariableList
	Block() *BlockBuilder
	Add(Builder)
	Bytes() []byte
	String() string
	// contains filtered or unexported methods
}

func NewIfBuilderWithSrc

func NewIfBuilderWithSrc(outer Builder, src string) Builder

type CallStmtBuilder

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

func NewCallStmt

func NewCallStmt(outer Builder, fnt parser.Type) *CallStmtBuilder

func (CallStmtBuilder) Add

func (b CallStmtBuilder) Add(bd Builder)

func (CallStmtBuilder) Block

func (b CallStmtBuilder) Block() *BlockBuilder

func (*CallStmtBuilder) Bytes

func (b *CallStmtBuilder) Bytes() []byte

func (*CallStmtBuilder) Call

func (b *CallStmtBuilder) Call(vl *VariableList, ignores []int) *VariableList

func (CallStmtBuilder) File

func (b CallStmtBuilder) File() *parser.File

func (CallStmtBuilder) Outer

func (b CallStmtBuilder) Outer() Builder

func (CallStmtBuilder) Package

func (b CallStmtBuilder) Package() *parser.Package

func (*CallStmtBuilder) Stmt

func (b *CallStmtBuilder) Stmt() ast.Stmt

func (CallStmtBuilder) String

func (b CallStmtBuilder) String() string

func (CallStmtBuilder) Variables

func (b CallStmtBuilder) Variables() *VariableList

type CreateVarGetter

type CreateVarGetter struct {
	NewVars *VariableList
	// contains filtered or unexported fields
}

func (*CreateVarGetter) Get

func (getter *CreateVarGetter) Get(i int, t parser.Type) *Variable

func (*CreateVarGetter) Getted

func (getter *CreateVarGetter) Getted() *VariableList

type DefineStmtBuilder

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

func NewDefine

func NewDefine(outer Builder, vl []*Variable, value ast.Expr) *DefineStmtBuilder

func (DefineStmtBuilder) Add

func (b DefineStmtBuilder) Add(bd Builder)

func (DefineStmtBuilder) Block

func (b DefineStmtBuilder) Block() *BlockBuilder

func (DefineStmtBuilder) Bytes

func (b DefineStmtBuilder) Bytes() []byte

func (DefineStmtBuilder) File

func (b DefineStmtBuilder) File() *parser.File

func (DefineStmtBuilder) Outer

func (b DefineStmtBuilder) Outer() Builder

func (DefineStmtBuilder) Package

func (b DefineStmtBuilder) Package() *parser.Package

func (*DefineStmtBuilder) Stmt

func (b *DefineStmtBuilder) Stmt() ast.Stmt

func (DefineStmtBuilder) String

func (b DefineStmtBuilder) String() string

func (DefineStmtBuilder) Variables

func (b DefineStmtBuilder) Variables() *VariableList

type ErrorWrapper

type ErrorWrapper interface {
	WrapError(b Builder, ev *Variable) *VariableList
	Wrap(b Builder, ev *Variable) *Variable
}

func NewErrorWrapper

func NewErrorWrapper(input interface{}) ErrorWrapper

type Field

type Field struct {
	Name  string
	Field *parser.Field
}

type FieldList

type FieldList struct {
	TagName string
	Fields  []*Field
}

func NewFieldList

func NewFieldList(tagName string) *FieldList

func (*FieldList) ContainPathToType

func (list *FieldList) ContainPathToType(t parser.Type) (*Field, []*parser.TPath, bool)

func (*FieldList) GetFieldByName

func (list *FieldList) GetFieldByName(name string) *Field

func (*FieldList) Print

func (list *FieldList) Print()

func (*FieldList) SpreadInspector

func (list *FieldList) SpreadInspector(field *parser.Field) bool

type FileBuilder

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

func NewFile

func NewFile(outer Builder, file *parser.File) *FileBuilder

func (*FileBuilder) Add

func (b *FileBuilder) Add(ab Builder)

func (*FileBuilder) AddFuncDecl

func (b *FileBuilder) AddFuncDecl(fd *ast.FuncDecl)

func (*FileBuilder) AddImport

func (b *FileBuilder) AddImport(name, path string)

func (*FileBuilder) Block

func (b *FileBuilder) Block() *BlockBuilder

func (*FileBuilder) Bytes

func (b *FileBuilder) Bytes() []byte

func (FileBuilder) File

func (b FileBuilder) File() *parser.File

func (FileBuilder) Outer

func (b FileBuilder) Outer() Builder

func (FileBuilder) Package

func (b FileBuilder) Package() *parser.Package

func (*FileBuilder) String

func (b *FileBuilder) String() string

func (FileBuilder) Variables

func (b FileBuilder) Variables() *VariableList

type ForRangeBuilder

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

func NewForRange

func NewForRange(outer Builder, key *Variable, value *Variable, over *Variable) *ForRangeBuilder

func (ForRangeBuilder) Add

func (b ForRangeBuilder) Add(bd Builder)

func (*ForRangeBuilder) Block

func (b *ForRangeBuilder) Block() *BlockBuilder

func (*ForRangeBuilder) Bytes

func (b *ForRangeBuilder) Bytes() []byte

func (ForRangeBuilder) File

func (b ForRangeBuilder) File() *parser.File

func (ForRangeBuilder) Outer

func (b ForRangeBuilder) Outer() Builder

func (ForRangeBuilder) Package

func (b ForRangeBuilder) Package() *parser.Package

func (*ForRangeBuilder) Stmt

func (b *ForRangeBuilder) Stmt() ast.Stmt

func (ForRangeBuilder) String

func (b ForRangeBuilder) String() string

func (ForRangeBuilder) Variables

func (b ForRangeBuilder) Variables() *VariableList

type FuncBufferBuilder

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

func NewFuncBuffer

func NewFuncBuffer(outer Builder, name string) *FuncBufferBuilder

func (FuncBufferBuilder) Add

func (b FuncBufferBuilder) Add(bd Builder)

func (*FuncBufferBuilder) Block

func (b *FuncBufferBuilder) Block() *BlockBuilder

func (*FuncBufferBuilder) Bytes

func (b *FuncBufferBuilder) Bytes() []byte

func (*FuncBufferBuilder) Decl

func (b *FuncBufferBuilder) Decl() *ast.FuncDecl

func (FuncBufferBuilder) File

func (b FuncBufferBuilder) File() *parser.File

func (FuncBufferBuilder) Outer

func (b FuncBufferBuilder) Outer() Builder

func (FuncBufferBuilder) Package

func (b FuncBufferBuilder) Package() *parser.Package

func (*FuncBufferBuilder) Printf

func (b *FuncBufferBuilder) Printf(format string, args ...interface{})

func (*FuncBufferBuilder) String

func (b *FuncBufferBuilder) String() string

func (FuncBufferBuilder) Variables

func (b FuncBufferBuilder) Variables() *VariableList

type FuncBuilder

type FuncBuilder struct {
	Decl *ast.FuncDecl
	// contains filtered or unexported fields
}

func NewFunction

func NewFunction(outer Builder, receiver parser.Type, fnt parser.Type, ew ErrorWrapper) *FuncBuilder

func (*FuncBuilder) Add

func (b *FuncBuilder) Add(ab Builder)

func (*FuncBuilder) Block

func (b *FuncBuilder) Block() *BlockBuilder

func (*FuncBuilder) Bytes

func (b *FuncBuilder) Bytes() []byte

func (FuncBuilder) File

func (b FuncBuilder) File() *parser.File

func (*FuncBuilder) HasResults

func (b *FuncBuilder) HasResults() bool

func (FuncBuilder) Outer

func (b FuncBuilder) Outer() Builder

func (FuncBuilder) Package

func (b FuncBuilder) Package() *parser.Package

func (*FuncBuilder) Receiver

func (b *FuncBuilder) Receiver() *Variable

func (*FuncBuilder) String

func (b *FuncBuilder) String() string

func (*FuncBuilder) Variables

func (b *FuncBuilder) Variables() *VariableList

type IfStmtBuilder

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

func NewIfStmt

func NewIfStmt(outer Builder) *IfStmtBuilder

func (IfStmtBuilder) Add

func (b IfStmtBuilder) Add(bd Builder)

func (*IfStmtBuilder) Block

func (b *IfStmtBuilder) Block() *BlockBuilder

func (*IfStmtBuilder) Bytes

func (b *IfStmtBuilder) Bytes() []byte

func (*IfStmtBuilder) Else

func (b *IfStmtBuilder) Else() *BlockBuilder

func (IfStmtBuilder) File

func (b IfStmtBuilder) File() *parser.File

func (IfStmtBuilder) Outer

func (b IfStmtBuilder) Outer() Builder

func (IfStmtBuilder) Package

func (b IfStmtBuilder) Package() *parser.Package

func (*IfStmtBuilder) SetInitCond

func (b *IfStmtBuilder) SetInitCond(init StmtBuilder, cond ast.Expr) *IfStmtBuilder

func (*IfStmtBuilder) Stmt

func (b *IfStmtBuilder) Stmt() ast.Stmt

func (IfStmtBuilder) String

func (b IfStmtBuilder) String() string

func (IfStmtBuilder) Variables

func (b IfStmtBuilder) Variables() *VariableList

type Mode

type Mode int

func (Mode) Contains

func (t Mode) Contains(m Mode) bool

type Printer

type Printer interface {
	Printf(format string, args ...interface{})
}

type ReturnStmtBuilder

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

func NewReturnStmt

func NewReturnStmt(outer Builder, results *VariableList) *ReturnStmtBuilder

func (ReturnStmtBuilder) Add

func (b ReturnStmtBuilder) Add(bd Builder)

func (ReturnStmtBuilder) Block

func (b ReturnStmtBuilder) Block() *BlockBuilder

func (ReturnStmtBuilder) Bytes

func (b ReturnStmtBuilder) Bytes() []byte

func (ReturnStmtBuilder) File

func (b ReturnStmtBuilder) File() *parser.File

func (ReturnStmtBuilder) Outer

func (b ReturnStmtBuilder) Outer() Builder

func (ReturnStmtBuilder) Package

func (b ReturnStmtBuilder) Package() *parser.Package

func (*ReturnStmtBuilder) Stmt

func (b *ReturnStmtBuilder) Stmt() ast.Stmt

func (ReturnStmtBuilder) String

func (b ReturnStmtBuilder) String() string

func (ReturnStmtBuilder) Variables

func (b ReturnStmtBuilder) Variables() *VariableList

type ScopeLevel

type ScopeLevel int
const (
	Scope_Local ScopeLevel = iota
	Scope_Function
	Scope_File
)

type StmtBuilder

type StmtBuilder interface {
	Builder
	Stmt() ast.Stmt
}

type StmtListBuilder

type StmtListBuilder interface {
	Builder
	StmtList() []ast.Stmt
}

type StructAssignBuilder

type StructAssignBuilder struct {
	*BlockBuilder
	// contains filtered or unexported fields
}

func NewStructAssign

func NewStructAssign(outer Builder, tag string, ev *Variable, paths []*parser.TPath) *StructAssignBuilder

func (StructAssignBuilder) File

func (b StructAssignBuilder) File() *parser.File

func (StructAssignBuilder) Outer

func (b StructAssignBuilder) Outer() Builder

func (StructAssignBuilder) Package

func (b StructAssignBuilder) Package() *parser.Package

func (*StructAssignBuilder) Stmts

func (b *StructAssignBuilder) Stmts() []ast.Stmt

func (*StructAssignBuilder) TryAssign

func (b *StructAssignBuilder) TryAssign(srcV, dstV *Variable) bool

func (StructAssignBuilder) Variables

func (b StructAssignBuilder) Variables() *VariableList

type StructSetterBuilder

type StructSetterBuilder struct {
	*BlockBuilder
	// contains filtered or unexported fields
}

func NewStructSetter

func NewStructSetter(outer Builder, tag string, ev *Variable, paths []*parser.TPath) *StructSetterBuilder

func (StructSetterBuilder) File

func (b StructSetterBuilder) File() *parser.File

func (StructSetterBuilder) Outer

func (b StructSetterBuilder) Outer() Builder

func (StructSetterBuilder) Package

func (b StructSetterBuilder) Package() *parser.Package

func (*StructSetterBuilder) Stmts

func (b *StructSetterBuilder) Stmts() []ast.Stmt

func (*StructSetterBuilder) TryAssign

func (b *StructSetterBuilder) TryAssign(srcV, dstV *Variable) bool

func (StructSetterBuilder) Variables

func (b StructSetterBuilder) Variables() *VariableList

func (*StructSetterBuilder) WithAssigner

func (b *StructSetterBuilder) WithAssigner(assigner func(*Field) func(Builder, *Variable, ast.Expr)) *StructSetterBuilder

func (*StructSetterBuilder) WithCallFunc

func (b *StructSetterBuilder) WithCallFunc(callFunc func(*Field) parser.Type) *StructSetterBuilder

func (*StructSetterBuilder) WithCheckDiff

func (b *StructSetterBuilder) WithCheckDiff() *StructSetterBuilder

type TPathBuilder

type TPathBuilder struct {
	*BlockBuilder
	// contains filtered or unexported fields
}

func NewTPathBuilder

func NewTPathBuilder(outer Builder, ev *Variable, checkDiff bool) *TPathBuilder

func (TPathBuilder) File

func (b TPathBuilder) File() *parser.File

func (*TPathBuilder) Follow

func (bd *TPathBuilder) Follow(srcV, dstV *Variable, paths []*parser.TPath)

func (TPathBuilder) Outer

func (b TPathBuilder) Outer() Builder

func (TPathBuilder) Package

func (b TPathBuilder) Package() *parser.Package

func (*TPathBuilder) Stmts

func (b *TPathBuilder) Stmts() []ast.Stmt

func (TPathBuilder) Variables

func (b TPathBuilder) Variables() *VariableList

func (*TPathBuilder) WithAssigner

func (b *TPathBuilder) WithAssigner(assigner func(Builder, *Variable, ast.Expr)) *TPathBuilder

func (*TPathBuilder) WithTargetSetter

func (b *TPathBuilder) WithTargetSetter(fnt parser.Type) *TPathBuilder

type VarAssignBuilder

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

func (VarAssignBuilder) Add

func (b VarAssignBuilder) Add(bd Builder)

func (VarAssignBuilder) Block

func (b VarAssignBuilder) Block() *BlockBuilder

func (VarAssignBuilder) Bytes

func (b VarAssignBuilder) Bytes() []byte

func (VarAssignBuilder) File

func (b VarAssignBuilder) File() *parser.File

func (VarAssignBuilder) Outer

func (b VarAssignBuilder) Outer() Builder

func (VarAssignBuilder) Package

func (b VarAssignBuilder) Package() *parser.Package

func (VarAssignBuilder) String

func (b VarAssignBuilder) String() string

func (VarAssignBuilder) Variables

func (b VarAssignBuilder) Variables() *VariableList

type VarGetter

type VarGetter interface {
	Get(int, parser.Type) *Variable
	Getted() *VariableList
}

func NewCreateVarGetter

func NewCreateVarGetter(exists *VariableList, mode Mode) VarGetter

func NewVarListGetter

func NewVarListGetter(vl *VariableList, mode Mode) VarGetter

func VarGetterWithIgnore

func VarGetterWithIgnore(getter VarGetter, ignores []int) VarGetter

type VarListGetter

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

func (*VarListGetter) Get

func (getter *VarListGetter) Get(i int, t parser.Type) *Variable

func (*VarListGetter) Getted

func (getter *VarListGetter) Getted() *VariableList

type Variable

type Variable struct {
	Type parser.Type
	// contains filtered or unexported fields
}

func AddAppendStmt

func AddAppendStmt(b Builder, v *Variable, element *Variable) *Variable

func AddVariableAssign

func AddVariableAssign(b Builder, v *Variable, value ast.Expr) *Variable

add assignment

func AddVariableDecl

func AddVariableDecl(b Builder, v *Variable) *Variable

Variable Declaration

func GetVariable

func GetVariable(b Builder, t parser.Type, mode Mode, scope ScopeLevel) *Variable

func GetVariableWithSkip

func GetVariableWithSkip(b Builder, t parser.Type, mode Mode, scope ScopeLevel, skip int) *Variable

func NewVariable

func NewVariable(pt parser.Type) *Variable

func (*Variable) AddressExpr

func (v *Variable) AddressExpr() ast.Expr

func (*Variable) AutoName

func (v *Variable) AutoName() *Variable

func (*Variable) CheckEqualExpr

func (v *Variable) CheckEqualExpr(isEqual bool, y ast.Expr) ast.Expr

func (*Variable) CheckNilExpr

func (v *Variable) CheckNilExpr(isNil bool) ast.Expr

func (*Variable) Copy

func (v *Variable) Copy() *Variable

func (*Variable) DotExpr

func (v *Variable) DotExpr(name string) ast.Expr

func (*Variable) DotTypeInFile

func (v *Variable) DotTypeInFile(dotSrc string, file *parser.File) parser.Type

func (*Variable) DotVariable

func (v *Variable) DotVariable(dotString string, file *parser.File) *Variable

func (*Variable) Expr

func (v *Variable) Expr() ast.Expr

func (*Variable) Ident

func (v *Variable) Ident() ast.Expr

func (*Variable) IncreaseName

func (v *Variable) IncreaseName()

func (*Variable) IndexExpr

func (v *Variable) IndexExpr(index ast.Expr) ast.Expr

func (*Variable) IsAnonymous

func (v *Variable) IsAnonymous() bool

func (*Variable) IsReadOnly

func (v *Variable) IsReadOnly() bool

func (*Variable) IsReadable

func (v *Variable) IsReadable() bool

func (*Variable) IsVisible

func (v *Variable) IsVisible() bool

func (*Variable) IsWriteOnly

func (v *Variable) IsWriteOnly() bool

func (*Variable) IsWriteable

func (v *Variable) IsWriteable() bool

func (*Variable) Mode

func (v *Variable) Mode() Mode

func (*Variable) Name

func (v *Variable) Name() string

func (*Variable) PointerValueExpr

func (v *Variable) PointerValueExpr() ast.Expr

func (*Variable) ReadOnly

func (v *Variable) ReadOnly() *Variable

func (*Variable) ReadWrite

func (v *Variable) ReadWrite() *Variable

func (*Variable) SetExpr

func (v *Variable) SetExpr(expr ast.Expr)

func (*Variable) SetExprSrc

func (v *Variable) SetExprSrc(str string)

func (*Variable) SetMode

func (v *Variable) SetMode(mode Mode)

func (*Variable) SetName

func (v *Variable) SetName(name string)

func (*Variable) StringKeyItemExpr

func (v *Variable) StringKeyItemExpr(key string) ast.Expr

func (*Variable) TypeConversionExpr

func (v *Variable) TypeConversionExpr(typ ast.Expr) ast.Expr

func (*Variable) WithExpr

func (v *Variable) WithExpr(expr ast.Expr) *Variable

func (*Variable) WithMode

func (v *Variable) WithMode(mode Mode) *Variable

func (*Variable) WithName

func (v *Variable) WithName(name string) *Variable

func (*Variable) WriteOnly

func (v *Variable) WriteOnly() *Variable

type VariableList

type VariableList struct {
	List []*Variable
}

func AddCallStmt

func AddCallStmt(b Builder, params *VariableList, fnt parser.Type) *VariableList

func AddCallStmtWithIgnores

func AddCallStmtWithIgnores(b Builder, params *VariableList, fnt parser.Type, ignores []int) *VariableList

func NewVariableList

func NewVariableList() *VariableList

func (*VariableList) Add

func (vl *VariableList) Add(v *Variable) bool

func (*VariableList) Check

func (vl *VariableList) Check(name string) bool

func (*VariableList) Concat

func (vl *VariableList) Concat(vl2 *VariableList) *VariableList

func (*VariableList) CreateGetter

func (vl *VariableList) CreateGetter(mode Mode) VarGetter

func (*VariableList) ForEach

func (vl *VariableList) ForEach(run func(int, *Variable))

func (*VariableList) Get

func (vl *VariableList) Get(name string) *Variable

func (*VariableList) GetByType

func (vl *VariableList) GetByType(pt parser.Type, mode Mode) *Variable

func (*VariableList) GetByTypeAndName

func (vl *VariableList) GetByTypeAndName(pt parser.Type, name string) *Variable

func (*VariableList) Getter

func (vl *VariableList) Getter(mode Mode) VarGetter

func (*VariableList) Insert

func (vl *VariableList) Insert(v *Variable, pos int) bool

func (*VariableList) IsEmpty

func (vl *VariableList) IsEmpty() bool

func (*VariableList) Names

func (vl *VariableList) Names() []string

func (*VariableList) Print

func (vl *VariableList) Print()

func (*VariableList) ResultGetter

func (vl *VariableList) ResultGetter(ignores []int) VarGetter

Jump to

Keyboard shortcuts

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