Mojo struct
Variadic
struct Variadic
A namespace for variadic utilities.
Implemented traits
AnyType,
ImplicitlyDestructible
comptime members
__del__is_trivial
comptime __del__is_trivial = True
concat
comptime concat[T: AnyTrait[AnyType], //, *Ts: Variadic[T]] = #kgen.variadic.concat<#kgen.param.decl.ref<"Ts"> : !kgen.variadic<variadic<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> T>>>
Represents the concatenation of multiple variadic sequences of types.
Parameters
- T (
AnyTrait): The trait that types in the variadic sequences must conform to. - *Ts (
Variadic): The variadic sequences to concatenate.
contains
comptime contains[Trait: AnyTrait[AnyType], //, type: Trait, element_types: Variadic[Trait]] = #kgen.variadic.reduce<#kgen.variadic<{:i1 0}> : !kgen.variadic<!lit.struct<@std::@builtin::@bool::@Bool>>, #kgen.param.decl.ref<"element_types"> : !kgen.variadic<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> Trait>, #kgen.gen<[cond(eq(:type !kgen.param<:!kgen.param<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> Trait> variadic_get(:variadic<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> Trait> *(0,1), *(0,2))>, !kgen.param<:!kgen.param<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> Trait> type>), sugar_builtin(apply(:!lit.generator<() -> !lit.struct<@std::@builtin::@bool::@Bool>> @std::@sys::@intrinsics::@"_type_is_eq_parse_time[::AnyType,::AnyType]()"<:!kgen.param<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> sugar_alias(*"UnknownDestructibility0x", trait<@std::@builtin::@anytype::@AnyType>)> #kgen.type> Trait> variadic_get(:variadic<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> Trait> *(0,1), (0,2))>>, :!kgen.param<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> sugar_alias("UnknownDestructibility0x", trait<@std::@builtin::@anytype::@AnyType>)> #kgen.type<!kgen.param<:!kgen.param<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> Trait> type>>>), {_mlir_value: i1 = eq(:type !kgen.param<:!kgen.param<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> Trait> variadic_get(:variadic<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> Trait> *(0,1), *(0,2))>, !kgen.param<:!kgen.param<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> Trait> type>)}), variadic_get(:variadic<!lit.struct<@std::@builtin::@bool::@Bool>> *(0,0), 0))]> : !kgen.generator<!lit.generator<<"PrevV": variadic<!lit.struct<@std::@builtin::@bool::@Bool>>, "VA": variadic<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> Trait>, "idx": index>variadic<!lit.struct<@std::@builtin::@bool::@Bool>>>>>[0]
Check if a type is contained in a variadic sequence.
Parameters
- Trait (
AnyTrait): The trait that the types conform to. - type (
Trait): The type to check for. - element_types (
Variadic): The variadic sequence of types to search.
empty_of_trait
comptime empty_of_trait[T: AnyTrait[AnyType]]
Empty comptime variadic of type values.
Parameters
- T (
AnyTrait): The trait that types in the variadic sequence must conform to.
empty_of_type
comptime empty_of_type[T: AnyType]
Empty comptime variadic of values.
Parameters
- T (
AnyType): The type of values in the variadic sequence.
reverse
comptime reverse[T: AnyTrait[AnyType], //, *element_types: T] = #kgen.variadic.reduce<#kgen.variadic<> : !kgen.variadic<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> T>, #kgen.param.decl.ref<"element_types"> : !kgen.variadic<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> T>, #kgen.gen<#kgen.variadic.concat<#kgen.variadic<*(0,0), [variadic_get(:variadic<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> T> *(0,1), add(mul(*(0,2), -1), #kgen.variadic.size<#kgen.param.index.ref<0, 1> : !kgen.variadic<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> T>>, -1))]> : !kgen.variadic<variadic<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> T>>>> : !kgen.generator<!lit.generator<<"PrevV": variadic<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> T>, "VA": variadic<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> T>, "idx": index>variadic<:!lit.anytrait<<@std::@builtin::@anytype::@AnyType>> T>>>>
A wrapper to reverse a variadic sequence of types.
Parameters
- T (
AnyTrait): The trait that the types conform to. - *element_types (
T): The variadic sequence of types to reverse.
splat
comptime splat[type: AnyType, count: Int] = #kgen.variadic.splat<:trait<@std::@builtin::@anytype::@AnyType> *"type", #lit.struct.extract<:!lit.struct<@std::@builtin::@int::@Int> count, "_mlir_value"> : index>
Splat a type into a variadic sequence.
Parameters
types
comptime types[T: AnyTrait[AnyType], //, *Ts: T] = Ts
Turn discrete type values (bound by T) into a single variadic.
Parameters
- T (
AnyTrait): The trait that the types must conform to. - *Ts (
T): The types to collect into a variadic sequence.
TypesOfTrait
comptime TypesOfTrait[T: AnyTrait[AnyType]] = Variadic[T]
Represents a raw variadic sequence of types that satisfy the specified trait.
Parameters
- T (
AnyTrait): The trait that types in the variadic sequence must conform to.
values
comptime values[T: AnyType, //, *values_: T] = values_
Turn discrete values (bound by T) into a single variadic.
Parameters
- T (
AnyType): The type of the values. - *values_ (
T): The values to collect into a variadic sequence.
ValuesOfType
comptime ValuesOfType[type: UnknownDestructibility] = Variadic[type]
Represents a raw variadic sequence of values of the specified type.
Parameters
- type (
UnknownDestructibility): The type of values in the variadic sequence.
Methods
size
static size[T: UnknownDestructibility](seq: Variadic[T]) -> Int
Returns the length of a variadic sequence.
Parameters:
- T (
UnknownDestructibility): The type of values in the sequence.
Args:
- seq (
Variadic): The variadic sequence to measure.
Returns:
Int: The length of the variadic sequence.
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!