remove misleading documentation
parent
496f271d17
commit
b3cbf290c8
|
@ -8315,216 +8315,15 @@ pub const TypeId = enum {
|
|||
{#header_close#}
|
||||
|
||||
{#header_open|@typeInfo#}
|
||||
<pre>{#syntax#}@typeInfo(comptime T: type) @import("builtin").TypeInfo{#endsyntax#}</pre>
|
||||
<pre>{#syntax#}@typeInfo(comptime T: type) @import("std").builtin.TypeInfo{#endsyntax#}</pre>
|
||||
<p>
|
||||
Returns information on the type. Returns a value of the following union:
|
||||
Provides type reflection.
|
||||
</p>
|
||||
{#code_begin|syntax#}
|
||||
pub const TypeInfo = union(TypeId) {
|
||||
Type: void,
|
||||
Void: void,
|
||||
Bool: void,
|
||||
NoReturn: void,
|
||||
Int: Int,
|
||||
Float: Float,
|
||||
Pointer: Pointer,
|
||||
Array: Array,
|
||||
Struct: Struct,
|
||||
ComptimeFloat: void,
|
||||
ComptimeInt: void,
|
||||
Undefined: void,
|
||||
Null: void,
|
||||
Optional: Optional,
|
||||
ErrorUnion: ErrorUnion,
|
||||
ErrorSet: ErrorSet,
|
||||
Enum: Enum,
|
||||
Union: Union,
|
||||
Fn: Fn,
|
||||
BoundFn: Fn,
|
||||
Opaque: void,
|
||||
Promise: Promise,
|
||||
Vector: Vector,
|
||||
EnumLiteral: void,
|
||||
|
||||
|
||||
pub const Int = struct {
|
||||
is_signed: bool,
|
||||
bits: comptime_int,
|
||||
};
|
||||
|
||||
pub const Float = struct {
|
||||
bits: comptime_int,
|
||||
};
|
||||
|
||||
pub const Pointer = struct {
|
||||
size: Size,
|
||||
is_const: bool,
|
||||
is_volatile: bool,
|
||||
alignment: comptime_int,
|
||||
child: type,
|
||||
is_allowzero: bool,
|
||||
sentinel: var,
|
||||
|
||||
pub const Size = enum {
|
||||
One,
|
||||
Many,
|
||||
Slice,
|
||||
C,
|
||||
};
|
||||
};
|
||||
|
||||
pub const Array = struct {
|
||||
len: comptime_int,
|
||||
child: type,
|
||||
sentinel: var,
|
||||
};
|
||||
|
||||
pub const ContainerLayout = enum {
|
||||
Auto,
|
||||
Extern,
|
||||
Packed,
|
||||
};
|
||||
|
||||
pub const StructField = struct {
|
||||
name: []const u8,
|
||||
offset: ?comptime_int,
|
||||
field_type: type,
|
||||
};
|
||||
|
||||
pub const Struct = struct {
|
||||
layout: ContainerLayout,
|
||||
fields: []StructField,
|
||||
decls: []Declaration,
|
||||
};
|
||||
|
||||
pub const Optional = struct {
|
||||
child: type,
|
||||
};
|
||||
|
||||
pub const ErrorUnion = struct {
|
||||
error_set: type,
|
||||
payload: type,
|
||||
};
|
||||
|
||||
pub const Error = struct {
|
||||
name: []const u8,
|
||||
value: comptime_int,
|
||||
};
|
||||
|
||||
pub const ErrorSet = ?[]Error;
|
||||
|
||||
pub const EnumField = struct {
|
||||
name: []const u8,
|
||||
value: comptime_int,
|
||||
};
|
||||
|
||||
pub const Enum = struct {
|
||||
layout: ContainerLayout,
|
||||
tag_type: type,
|
||||
fields: []EnumField,
|
||||
decls: []Declaration,
|
||||
};
|
||||
|
||||
pub const UnionField = struct {
|
||||
name: []const u8,
|
||||
enum_field: ?EnumField,
|
||||
field_type: type,
|
||||
};
|
||||
|
||||
pub const Union = struct {
|
||||
layout: ContainerLayout,
|
||||
tag_type: ?type,
|
||||
fields: []UnionField,
|
||||
decls: []Declaration,
|
||||
};
|
||||
|
||||
pub const CallingConvention = enum {
|
||||
Unspecified,
|
||||
C,
|
||||
Cold,
|
||||
Naked,
|
||||
Stdcall,
|
||||
Async,
|
||||
};
|
||||
|
||||
pub const FnArg = struct {
|
||||
is_generic: bool,
|
||||
is_noalias: bool,
|
||||
arg_type: ?type,
|
||||
};
|
||||
|
||||
pub const Fn = struct {
|
||||
calling_convention: CallingConvention,
|
||||
is_generic: bool,
|
||||
is_var_args: bool,
|
||||
return_type: ?type,
|
||||
async_allocator_type: ?type,
|
||||
args: []FnArg,
|
||||
};
|
||||
|
||||
pub const Promise = struct {
|
||||
child: ?type,
|
||||
};
|
||||
|
||||
pub const Vector = struct {
|
||||
len: comptime_int,
|
||||
child: type,
|
||||
};
|
||||
|
||||
pub const Declaration = struct {
|
||||
name: []const u8,
|
||||
is_pub: bool,
|
||||
data: Data,
|
||||
|
||||
pub const Data = union(enum) {
|
||||
Type: type,
|
||||
Var: type,
|
||||
Fn: FnDecl,
|
||||
|
||||
pub const FnDecl = struct {
|
||||
fn_type: type,
|
||||
inline_type: Inline,
|
||||
calling_convention: CallingConvention,
|
||||
is_var_args: bool,
|
||||
is_extern: bool,
|
||||
is_export: bool,
|
||||
lib_name: ?[]const u8,
|
||||
return_type: type,
|
||||
arg_names: [][] const u8,
|
||||
|
||||
pub const Inline = enum {
|
||||
Auto,
|
||||
Always,
|
||||
Never,
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
{#code_end#}
|
||||
<p>
|
||||
For {#link|structs|struct#}, {#link|unions|union#}, {#link|enums|enum#}, and
|
||||
{#link|error sets|Error Set Type#}, the fields are guaranteed to be in the same
|
||||
order as declared. For declarations, the order is unspecified.
|
||||
</p>
|
||||
<p>
|
||||
Note that the {#syntax#}sentinel{#endsyntax#} field in {#syntax#}TypeInfo.Pointer{#endsyntax#}
|
||||
and {#syntax#}TypeInfo.Array{#endsyntax#} is of type {#syntax#}var{#endsyntax#} rather
|
||||
than {#syntax#}?child{#endsyntax#}. {#syntax#}TypeInfo.Pointer{#endsyntax#}
|
||||
and {#syntax#}TypeInfo.Array{#endsyntax#} can be constructed with any comptime value for the
|
||||
{#syntax#}sentinel{#endsyntax#} field. However, the {#syntax#}@Type{#endsyntax#} builtin will
|
||||
only accept the TypeInfo struct if the sentinel value is implicitly convertible to
|
||||
{#syntax#}child{#endsyntax#}. Furthermore, any {#syntax#}TypeInfo.Pointer{#endsyntax#}
|
||||
or {#syntax#}TypeInfo.Array{#endsyntax#} retreived from {#syntax#}@typeInfo{#endsyntax#} will
|
||||
guarantee that {#syntax#}@typeOf(sentinel){#endsyntax#} is equal to
|
||||
{#syntax#}?child{#endsyntax#}. For example, {#syntax#}@typeOf(sentinel){#endsyntax#} for a
|
||||
{#syntax#}TypeInfo.Pointer{#endsyntax#} constructed with
|
||||
{#syntax#}TypeInfo.Pointer { ... .sentinel = 0; ... }{#endsyntax#} would be
|
||||
{#syntax#}comptime_int{#endsyntax#} rather than {#syntax#}?u8{#endsyntax#}. However, if you
|
||||
passed that {#syntax#}TypeInfo.Pointer{#endsyntax#} struct to
|
||||
{#syntax#}@typeInfo(@Type(myPointerInfo)){#endsyntax#} then {#syntax#}@typeOf(sentinel){#endsyntax#}
|
||||
would be {#syntax#}?u8{#endsyntax#}.
|
||||
</p>
|
||||
{#header_close#}
|
||||
|
||||
{#header_open|@typeName#}
|
||||
|
|
Loading…
Reference in New Issue