feature. See also
. The project being documented here (as the example) is the Zig library itself.
ast.Payload
pub const Payload = struct
File
Code
pub const Payload = struct {
tag: Node.Tag,
pub const Value = struct {
base: Payload,
data: []const u8,
};
pub const UnOp = struct {
base: Payload,
data: Node,
};
pub const BinOp = struct {
base: Payload,
data: struct {
lhs: Node,
rhs: Node,
},
};
pub const Discard = struct {
base: Payload,
data: struct {
should_skip: bool,
value: Node,
},
};
pub const If = struct {
base: Payload,
data: struct {
cond: Node,
then: Node,
@"else": ?Node,
},
};
pub const While = struct {
base: Payload,
data: struct {
cond: Node,
body: Node,
cont_expr: ?Node,
},
};
pub const Switch = struct {
base: Payload,
data: struct {
cond: Node,
cases: []Node,
},
};
pub const BreakVal = struct {
base: Payload,
data: struct {
label: ?[]const u8,
val: Node,
},
};
pub const Call = struct {
base: Payload,
data: struct {
lhs: Node,
args: []Node,
},
};
pub const VarDecl = struct {
base: Payload,
data: struct {
is_pub: bool,
is_const: bool,
is_extern: bool,
is_export: bool,
is_threadlocal: bool,
alignment: ?c_uint,
linksection_string: ?[]const u8,
name: []const u8,
type: Node,
init: ?Node,
},
};
pub const Func = struct {
base: Payload,
data: struct {
is_pub: bool,
is_extern: bool,
is_export: bool,
is_inline: bool,
is_var_args: bool,
name: ?[]const u8,
linksection_string: ?[]const u8,
explicit_callconv: ?CallingConvention,
params: []Param,
return_type: Node,
body: ?Node,
alignment: ?c_uint,
},
pub const CallingConvention = enum {
c,
x86_64_sysv,
x86_64_win,
x86_stdcall,
x86_fastcall,
x86_thiscall,
x86_vectorcall,
x86_regcall,
aarch64_vfabi,
aarch64_sve_pcs,
arm_aapcs,
arm_aapcs_vfp,
m68k_rtd,
riscv_vector,
};
};
pub const Param = struct {
is_noalias: bool,
name: ?[]const u8,
type: Node,
};
pub const Container = struct {
base: Payload,
data: struct {
layout: enum { @"packed", @"extern", none },
fields: []Field,
decls: []Node,
},
pub const Field = struct {
name: []const u8,
type: Node,
alignment: ?c_uint,
default_value: ?Node,
};
};
pub const TupleInit = struct {
base: Payload,
data: []Node,
};
pub const ContainerInit = struct {
base: Payload,
data: struct {
lhs: Node,
inits: []Initializer,
},
pub const Initializer = struct {
name: []const u8,
value: Node,
};
};
pub const ContainerInitDot = struct {
base: Payload,
data: []Initializer,
pub const Initializer = struct {
name: []const u8,
value: Node,
};
};
pub const Block = struct {
base: Payload,
data: struct {
label: ?[]const u8,
stmts: []Node,
},
};
pub const Array = struct {
base: Payload,
data: ArrayTypeInfo,
pub const ArrayTypeInfo = struct {
elem_type: Node,
len: u64,
};
};
pub const Pointer = struct {
base: Payload,
data: struct {
elem_type: Node,
is_const: bool,
is_volatile: bool,
is_allowzero: bool,
},
};
pub const ArgRedecl = struct {
base: Payload,
data: struct {
actual: []const u8,
mangled: []const u8,
},
};
pub const FailDecl = struct {
base: Payload,
data: struct {
actual: []const u8,
mangled: []const u8,
local: bool,
},
};
pub const SimpleVarDecl = struct {
base: Payload,
data: struct {
name: []const u8,
init: Node,
},
};
pub const EnumConstant = struct {
base: Payload,
data: struct {
name: []const u8,
is_public: bool,
type: ?Node,
value: Node,
},
};
pub const ArrayFiller = struct {
base: Payload,
data: struct {
type: Node,
filler: Node,
count: u64,
},
};
pub const PubInlineFn = struct {
base: Payload,
data: struct {
name: []const u8,
params: []Param,
return_type: Node,
body: Node,
},
};
pub const FieldAccess = struct {
base: Payload,
data: struct {
lhs: Node,
field_name: []const u8,
},
};
pub const StringSlice = struct {
base: Payload,
data: struct {
string: Node,
end: u64,
},
};
pub const Shuffle = struct {
base: Payload,
data: struct {
element_type: Node,
a: Node,
b: Node,
mask_vector: Node,
},
};
pub const Extern = struct {
base: Payload,
data: struct {
type: Node,
name: Node,
},
};
pub const HelperCall = struct {
base: Payload,
data: struct {
name: []const u8,
args: []const Node,
},
};
pub const HelperRef = struct {
base: Payload,
data: []const u8,
};
pub const RootRef = struct {
base: Payload,
data: []const u8,
};
}