Skip to content

v.reflection #

fn get_aliases #

fn get_aliases() []Type

get_aliases returns the registered aliases

fn get_enums #

fn get_enums() []Type

get_enums returns the registered enums

fn get_funcs #

fn get_funcs() []Function

get_functions returns the functions built with V source

fn get_interfaces #

fn get_interfaces() []Interface

get_interfaces returns the registered aliases

fn get_modules #

fn get_modules() []Module

get_modules returns the module name built with V source

fn get_string_by_idx #

fn get_string_by_idx(idx int) string

API module

fn get_structs #

fn get_structs() []Type

fn get_sum_types #

fn get_sum_types() []Type

get_sum_types returns the registered sum types

fn get_type #

fn get_type(idx int) ?Type

fn get_type_symbol #

fn get_type_symbol(idx int) ?TypeSymbol

fn get_type_symbols #

fn get_type_symbols() []TypeSymbol

get_type_symbol returns the registered type symbols

fn get_types #

fn get_types() []Type

get_types returns the registered types

fn type_name #

fn type_name(idx int) string

Type API

fn type_of #

fn type_of[T](val T) Type

type_of returns the type info of the passed value

fn type_symbol_name #

fn type_symbol_name(idx int) string

Type Symbol API

type TypeInfo #

type TypeInfo = Alias
	| Array
	| ArrayFixed
	| Enum
	| Function
	| Interface
	| Map
	| MultiReturn
	| None
	| Struct
	| SumType

fn (VType) has_flag #

fn (t VType) has_flag(flag VTypeFlag) bool

return true if flag is set on t

fn (VType) idx #

fn (t VType) idx() int

fn (VType) str #

fn (t VType) str() string

fn (VType) is_ptr #

fn (t VType) is_ptr() bool

return true if t is a pointer (nr_muls>0)

enum VKind #

enum VKind {
	placeholder
	void
	voidptr
	byteptr
	charptr
	i8
	i16
	i32
	i64
	int
	isize
	u8
	u16
	u32
	u64
	usize
	f32
	f64
	char
	rune
	bool
	none
	string
	array
	array_fixed
	map
	chan
	any
	struct
	generic_inst
	multi_return
	sum_type
	alias
	enum
	function
	interface
	float_literal
	int_literal
	aggregate
	thread
}

enum VLanguage #

enum VLanguage {
	v
	c
	js
	amd64 / aka x86_64
	i386
	arm64 / 64-bit arm
	arm32 / 32-bit arm
	rv64  / 64-bit risc-v
	rv32  / 32-bit risc-v
	wasm32
}

enum VTypeFlag #

enum VTypeFlag {
	option
	result
	variadic
	generic
	shared_f
	atomic_f
}

max of 8

struct Alias #

struct Alias {
pub:
	parent_idx int       / parent type idx
	language   VLanguage / language
}

struct Array #

struct Array {
pub:
	nr_dims   int / nr of dimensions
	elem_type int / elem type idx
}

struct ArrayFixed #

struct ArrayFixed {
pub:
	size      int / array size
	elem_type int / elem type idx
}

struct Enum #

struct Enum {
pub:
	vals    []string / enum values
	is_flag bool     / is flag?
}

struct Function #

struct Function {
pub:
	mod_name     string        / module name
	name         string        / function/method name
	args         []FunctionArg / function/method args
	file_idx     int           / source file name
	line_start   int           / decl start line
	line_end     int           / decl end line
	is_variadic  bool          / is variadic?
	return_typ   VType         / return type idx
	receiver_typ VType         / receiver type idx (is a method)
	is_pub       bool          / is pub?
}

struct FunctionArg #

struct FunctionArg {
pub:
	name   string / argument name
	typ    VType  / argument type idx
	is_mut bool   / is mut?
}

struct Interface #

struct Interface {
pub:
	name       string        / interface name
	methods    []Function    / methods
	fields     []StructField / fields
	is_generic bool          / is generic?
}

struct Map #

struct Map {
pub:
	key_type   VType / key type
	value_type VType / value type
}

struct Module #

struct Module {
pub:
	name string / module name
}

struct MultiReturn #

struct MultiReturn {
pub:
	types []VType / types
}

struct None #

struct None {
pub:
	parent_idx int
}

struct Reflection #

@[heap]
@[minify]
struct Reflection {
pub mut:
	modules      []Module
	funcs        []Function
	types        []Type
	type_symbols []TypeSymbol
	enums        []Enum
	interfaces   []Interface
	strings      map[int]string
}

struct Struct #

struct Struct {
pub:
	parent_idx int           / parent type
	attrs      []string      / struct attrs
	fields     []StructField / fields
}

struct StructField #

struct StructField {
pub:
	name   string   / field name
	typ    VType    / type
	attrs  []string / field attrs
	is_pub bool     / is pub?
	is_mut bool     / is mut?
}

struct SumType #

struct SumType {
pub:
	parent_idx int     / parent type
	variants   []VType / variant type
}

struct Type #

struct Type {
pub:
	name string     / type name
	idx  int        / type idx
	sym  TypeSymbol / type symbol
}

struct TypeSymbol #

struct TypeSymbol {
pub:
	name       string     / symbol name
	mod        string     / mod name
	idx        int        / symbol idx
	parent_idx int        / symbol parent idx
	language   VLanguage  / language
	kind       VKind      / kind
	info       TypeInfo   / info
	methods    []Function / methods
}

Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant