Documentation ¶
Index ¶
- func DeleteProgram(db *gorm.DB, program string)
- func SaveVariable(db *gorm.DB, program, variable string, instIDs []int64) error
- func YieldIrCodes(db *gorm.DB, ctx context.Context) chan *IrCode
- func YieldIrCodesProgramName(db *gorm.DB, ctx context.Context, program string) chan *IrCode
- type Int64Map
- type Int64Slice
- type IrCode
- type IrScopeNode
- type IrSourceCodeResource
- type IrVariable
- type StringSlice
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DeleteProgram ¶
Types ¶
type Int64Slice ¶
type Int64Slice []int64
Int64Slice 是一个自定义类型,用于处理 []int64 的序列化和反序列化
func (*Int64Slice) Scan ¶
func (us *Int64Slice) Scan(value interface{}) error
Scan 实现了 sql.Scanner 接口,允许从数据库读取值时将其转换回 Int64Slice 类型
type IrCode ¶
type IrCode struct { gorm.Model ProgramName string `json:"program_name" gorm:"index"` PackageName string `json:"package_name" gorm:"index"` // source code SourceCodeStartOffset int64 `json:"source_code_start_offset"` SourceCodeEndOffset int64 `json:"source_code_end_offset"` SourceCodeHash string `json:"source_code_hash"` // opcode Opcode int64 `json:"opcode"` OpcodeName string `json:"opcode_name"` // just for binary and unary operator OpcodeOperator string `json:"opcode_operator"` // basic info Name string `json:"name"` VerboseName string `json:"verbose_name"` ShortVerboseName string `json:"short_verbose_name"` // any IrCode in one block inner one function CurrentBlock int64 `json:"current_block"` CurrentFunction int64 `json:"current_function"` // FunctionDefs IsFunction bool `json:"is_function"` FormalArgs Int64Slice `json:"formal_args" gorm:"type:text"` IsVariadic bool `json:"is_variadic"` ReturnCodes Int64Slice `json:"return_codes" gorm:"type:text"` SideEffects Int64Slice `json:"side_effects" gorm:"type:text"` IsExternal bool `json:"is_external"` CodeBlocks Int64Slice `json:"code_blocks" gorm:"type:text"` EnterBlock int64 `json:"enter_block"` ExitBlock int64 `json:"exit_block"` DeferBlock int64 `json:"defer_block"` ChildrenFunction Int64Slice `json:"children_function" gorm:"type:text"` ParentFunction int64 `json:"parent_function"` // block IsBlock bool `json:"is_block"` PredBlock Int64Slice `json:"pred_block" gorm:"type:text"` SuccBlock Int64Slice `json:"succ_block" gorm:"type:text"` Phis Int64Slice `json:"phis_in_block" gorm:"type:text"` // Use-Def Chains Relation Defs Int64Slice `json:"defs" gorm:"type:text"` Users Int64Slice `json:"users" gorm:"type:text"` // this is user is call and method is this IR self CalledBy Int64Slice `json:"is_called_by" gorm:"type:text"` // OOP Supporting IsObject bool ObjectMembers Int64Map `json:"object_members" gorm:"type:text"` IsObjectMember bool ObjectParent int64 `json:"object_parent"` ObjectKey int64 `json:"object_key"` // Maskable MaskedCodes Int64Slice `json:"masked_codes" gorm:"type:text"` IsMasked bool `json:"is_masked"` // Call instruction IsCalled bool `json:"is_called"` Method int64 `json:"method"` ActualArgs Int64Slice `json:"actual_args" gorm:"type:text"` BingDings Int64Map `json:"bing_dings" gorm:"type:text"` ArgumentMember Int64Map `json:"argument_member" gorm:"type:text"` // Variable Variable StringSlice `json:"variable" gorm:"type:text"` // Constant ConstantValue string `json:"constant_value" gorm:"type:text"` // compile hash means: hash[ (file-content)+(program-name)+(package-name)+(program-index) ] ProgramCompileHash string `json:"program_compile_hash" gorm:"index"` // not important information ExtraInformation string `json:"extra_information"` }
func (*IrCode) GetExtraInfo ¶ added in v1.3.3
func (*IrCode) GetIdInt64 ¶ added in v1.3.3
func (*IrCode) IsEmptySourceCodeHash ¶ added in v1.3.3
func (*IrCode) SetExtraInfo ¶ added in v1.3.3
func (*IrCode) VerboseString ¶ added in v1.3.3
type IrScopeNode ¶ added in v1.3.3
type IrScopeNode struct { gorm.Model ProgramName string `json:"program_name" gorm:"index"` ParentNodeId int64 `json:"parent_node_id" gorm:"index"` ChildrenNodes Int64Slice `json:"children" gorm:"type:text"` ExtraInfo string `json:"extraInfo"` }
func GetIrScope ¶ added in v1.3.3
func GetIrScope(id int64) (*IrScopeNode, error)
func RequireScopeNode ¶ added in v1.3.3
func RequireScopeNode() (int64, *IrScopeNode)
type IrSourceCodeResource ¶
type IrVariable ¶
type IrVariable struct { gorm.Model ProgramName string `json:"program_name" gorm:"index"` VariableName string `json:"variable_name" gorm:"index"` InstructionID Int64Slice `json:"instruction_id" gorm:"type:text"` }
func GetVariable ¶ added in v1.3.3
func GetVariable(db *gorm.DB, program, variable string) (*IrVariable, error)
type StringSlice ¶
type StringSlice []string
func (*StringSlice) Scan ¶
func (ss *StringSlice) Scan(value interface{}) error
Click to show internal directories.
Click to hide internal directories.