Documentation ¶
Index ¶
- func Atoi(s string) int
- func ConvertFunctionNameFromCtoGo(name string) string
- func CreateSliceFromReference(goType string, expr goast.Expr) *goast.SliceExpr
- func CreateUnlimitedSliceFromReference(goType string, expr goast.Expr) *goast.SliceExpr
- func EvaluateConstExpr(expr goast.Expr) (isConst bool, value int64)
- func GetExportedName(field string) string
- func GetRegex(rx string) *regexp.Regexp
- func GetUintptrForSlice(expr goast.Expr) (goast.Expr, string)
- func GroupsFromRegex(rx, line string) map[string]string
- func InStrings(item string, items []string) bool
- func IsAValidFunctionName(s string) bool
- func IsAddressable(expr goast.Expr) bool
- func IsGoKeyword(w string) bool
- func NewAnonymousFunction(body, deferBody []goast.Stmt, returnValue goast.Expr, returnType string) *goast.CallExpr
- func NewBinaryExpr(left goast.Expr, operator token.Token, right goast.Expr, returnType string, ...) goast.Expr
- func NewCallExpr(functionName string, args ...goast.Expr) *goast.CallExpr
- func NewExprStmt(expr goast.Expr) *goast.ExprStmt
- func NewFloatLit(value float64) *goast.BasicLit
- func NewFuncClosure(returnType string, stmts ...goast.Stmt) *goast.CallExpr
- func NewFuncType(fieldList *goast.FieldList, returnType string, addDefaultReturn bool) *goast.FuncType
- func NewGoExpr(expr string) goast.Expr
- func NewIdent(name string) *goast.Ident
- func NewIntLit(value int) *goast.BasicLit
- func NewNil() *goast.Ident
- func NewStringLit(value string) *goast.BasicLit
- func NewTypeIdent(name string) goast.Expr
- func NewUnaryExpr(operator token.Token, right goast.Expr) *goast.UnaryExpr
- func NewVaListTag() goast.Expr
- func PanicIfNil(check interface{}, message string)
- func PanicOnError(err error, message string)
- func ShowDiff(a, b string) string
- func ToUnsafePointer(expr goast.Expr) goast.Expr
- func Ucfirst(word string) string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Atoi ¶ added in v0.9.0
Atoi converts a string to an integer in cases where we are sure that s will be a valid integer, otherwise it will panic.
func ConvertFunctionNameFromCtoGo ¶ added in v0.18.0
ConvertFunctionNameFromCtoGo - convert function name fromC to Go
func CreateSliceFromReference ¶ added in v0.14.0
CreateSliceFromReference - create a slice, like : (*[1]int)(unsafe.Pointer(&a))[:]
func CreateUnlimitedSliceFromReference ¶ added in v0.23.1
CreateUnlimitedSliceFromReference - create a slice, like : (*[1000000000]int)(unsafe.Pointer(&a))[:]
func EvaluateConstExpr ¶ added in v0.23.6
EvaluateConstExpr evaluates the given expression. Returns whether the expr is an integer constant, and the resulting number if constant.
func GetExportedName ¶ added in v0.9.0
GetExportedName returns a deterministic and Go safe name for a C type. For example, "*__foo[]" will return "FooSlice".
func GetUintptrForSlice ¶ added in v0.21.10
GetUintptrForSlice - return uintptr for slice Example : uint64(uintptr(unsafe.Pointer((*(**int)(unsafe.Pointer(& ...slice... )))))))
func GroupsFromRegex ¶ added in v0.13.3
GroupsFromRegex gets RegExp groups after matching it on a line
func IsAValidFunctionName ¶ added in v0.12.4
IsAValidFunctionName performs a check to see if a string would make a valid function name in Go. Go allows unicode characters, but C doesn't.
func IsAddressable ¶ added in v0.23.6
IsAddressable returns whether it's possible to obtain an address of expr using the unary & operator.
func IsGoKeyword ¶ added in v0.14.0
IsGoKeyword will return true if a word is one of the reserved words in Go. This means that it cannot be used as an identifier, function name, etc.
The list of reserved words has been taken from the spec at https://golang.org/ref/spec#Keywords
func NewAnonymousFunction ¶ added in v0.21.2
func NewAnonymousFunction(body, deferBody []goast.Stmt, returnValue goast.Expr, returnType string) *goast.CallExpr
NewAnonymousFunction - create a new anonymous function. Example:
func() returnType{ defer func(){ deferBody }() body return returnValue }
func NewBinaryExpr ¶ added in v0.11.0
func NewBinaryExpr(left goast.Expr, operator token.Token, right goast.Expr, returnType string, stmt bool) goast.Expr
NewBinaryExpr create a new Go AST binary expression with a left, operator and right operand.
You should use this instead of BinaryExpr directly so that nil left and right operands can be caught (and panic) before Go tried to render the source - which would result in a very hard to debug error.
Assignment operators in C can be nested inside other expressions, like:
a + (b += 3)
In Go this is not allowed. Since the operators mutate variables it is not possible in some cases to move the statements before or after. The only safe (and generic) way around this is to create an immediately executing closure, like:
a + (func () int { b += 3; return b }())
In a lot of cases this may be unnecessary and obfuscate the Go output but these will have to be optimised over time and be strict about the situation they are simplifying.
If stmt is true then the binary expression is the whole statement. This means that the closure above does not need to applied. This makes the output code much neater.
func NewCallExpr ¶ added in v0.11.0
NewCallExpr creates a new *"go/ast".CallExpr with each of the arguments (after the function name) being each of the expressions that represent the individual arguments.
The function name is checked with IsAValidFunctionName and will panic if the function name is deemed to be not valid.
func NewExprStmt ¶ added in v0.11.3
NewExprStmt returns a new ExprStmt from an expression. It is used when converting a single expression into a statement for another receiver.
It is recommended you use this method of instantiating the ExprStmt yourself because NewExprStmt will check that the expr is not nil (or panic). This is much more helpful when trying to debug why the Go source build crashes because of a nil pointer - which eventually leads back to a nil expr.
func NewFloatLit ¶ added in v0.13.2
NewFloatLit creates a new Float Literal.
func NewFuncClosure ¶ added in v0.12.4
NewFuncClosure creates a new *"go/ast".CallExpr that calls a function literal closure. The first argument is the Go return type of the closure, and the remainder of the arguments are the statements of the closure body.
func NewFuncType ¶ added in v0.14.0
func NewFuncType(fieldList *goast.FieldList, returnType string, addDefaultReturn bool) *goast.FuncType
NewFuncType - create a new function type, example: func ...(fieldList)(returnType)
func NewGoExpr ¶ added in v0.17.5
NewGoExpr is used to facilitate the creation of go AST
It should not be used to transpile user code.
func NewNil ¶ added in v0.12.0
NewNil returns a Go AST identity that can be used to represent "nil".
func NewStringLit ¶ added in v0.11.0
NewStringLit returns a new Go basic literal with a string value.
func NewTypeIdent ¶ added in v0.13.2
NewTypeIdent created a new Go identity that is to be used for a Go type. This is different from NewIdent in how the input string is validated.
func NewUnaryExpr ¶ added in v0.13.2
NewUnaryExpr creates a new Go unary expression. You should use this function instead of instantiating the UnaryExpr directly because this function has extra error checking.
func NewVaListTag ¶ added in v0.22.0
NewVaListTag creates a new VaList Literal.
func PanicIfNil ¶ added in v0.13.7
func PanicIfNil(check interface{}, message string)
PanicIfNil will panic with the message provided if the check is nil. This is a convieniance method to avoid many similar if statements.
func PanicOnError ¶ added in v0.13.7
PanicOnError will panic with the message and error if the error is not nil. If the error is nil (no error) then nothing happens.
func ShowDiff ¶ added in v0.11.1
ShowDiff will print two strings vertically next to each other so that line differences are easier to read.
func ToUnsafePointer ¶ added in v0.23.6
ToUnsafePointer returns an unsafe Pointer to a temporary Variable to which the given expr is assigned.
Types ¶
This section is empty.