edlang/inkwell/types/trait.BasicType.html
2024-03-27 11:12:16 +00:00

71 lines
18 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Represents a basic LLVM type, that may be used in functions and struct definitions."><title>BasicType in inkwell::types - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-5bc39a1768837dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="inkwell" data-themes="" data-resource-suffix="" data-rustdoc-version="1.77.0 (aedd173a2 2024-03-17)" data-channel="1.77.0" data-search-js="search-dd67cee4cfa65049.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-4c98445ec4002617.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-48f368f3872407c8.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-04d5337699b92874.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../inkwell/index.html">inkwell</a><span class="version">0.4.0</span></h2></div><h2 class="location"><a href="#">BasicType</a></h2><div class="sidebar-elems"><section><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.array_type">array_type</a></li><li><a href="#method.as_basic_type_enum">as_basic_type_enum</a></li><li><a href="#method.fn_type">fn_type</a></li><li><a href="#method.is_sized">is_sized</a></li><li><a href="#method.ptr_type">ptr_type</a></li><li><a href="#method.size_of">size_of</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In inkwell::types</a></h2></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../inkwell/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">inkwell</a>::<wbr><a href="index.html">types</a>::<wbr><a class="trait" href="#">BasicType</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/inkwell/types/traits.rs.html#39-132">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub unsafe trait BasicType&lt;'ctx&gt;: <a class="trait" href="trait.AnyType.html" title="trait inkwell::types::AnyType">AnyType</a>&lt;'ctx&gt; {
// Provided methods
fn <a href="#method.as_basic_type_enum" class="fn">as_basic_type_enum</a>(&amp;self) -&gt; <a class="enum" href="enum.BasicTypeEnum.html" title="enum inkwell::types::BasicTypeEnum">BasicTypeEnum</a>&lt;'ctx&gt; { ... }
<span class="item-spacer"></span> fn <a href="#method.fn_type" class="fn">fn_type</a>(
&amp;self,
param_types: &amp;[<a class="enum" href="enum.BasicMetadataTypeEnum.html" title="enum inkwell::types::BasicMetadataTypeEnum">BasicMetadataTypeEnum</a>&lt;'ctx&gt;],
is_var_args: <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.bool.html">bool</a>
) -&gt; <a class="struct" href="struct.FunctionType.html" title="struct inkwell::types::FunctionType">FunctionType</a>&lt;'ctx&gt; { ... }
<span class="item-spacer"></span> fn <a href="#method.is_sized" class="fn">is_sized</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.bool.html">bool</a> { ... }
<span class="item-spacer"></span> fn <a href="#method.size_of" class="fn">size_of</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.77.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../values/struct.IntValue.html" title="struct inkwell::values::IntValue">IntValue</a>&lt;'ctx&gt;&gt; { ... }
<span class="item-spacer"></span> fn <a href="#method.array_type" class="fn">array_type</a>(&amp;self, size: <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.u32.html">u32</a>) -&gt; <a class="struct" href="struct.ArrayType.html" title="struct inkwell::types::ArrayType">ArrayType</a>&lt;'ctx&gt; { ... }
<span class="item-spacer"></span> fn <a href="#method.ptr_type" class="fn">ptr_type</a>(&amp;self, address_space: <a class="struct" href="../struct.AddressSpace.html" title="struct inkwell::AddressSpace">AddressSpace</a>) -&gt; <a class="struct" href="struct.PointerType.html" title="struct inkwell::types::PointerType">PointerType</a>&lt;'ctx&gt; { ... }
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Represents a basic LLVM type, that may be used in functions and struct definitions.</p>
</div></details><h2 id="provided-methods" class="section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.as_basic_type_enum" class="method"><a class="src rightside" href="../../src/inkwell/types/traits.rs.html#41-43">source</a><h4 class="code-header">fn <a href="#method.as_basic_type_enum" class="fn">as_basic_type_enum</a>(&amp;self) -&gt; <a class="enum" href="enum.BasicTypeEnum.html" title="enum inkwell::types::BasicTypeEnum">BasicTypeEnum</a>&lt;'ctx&gt;</h4></section></summary><div class="docblock"><p>Returns a <code>BasicTypeEnum</code> that represents the current type.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.fn_type" class="method"><a class="src rightside" href="../../src/inkwell/types/traits.rs.html#58-60">source</a><h4 class="code-header">fn <a href="#method.fn_type" class="fn">fn_type</a>(
&amp;self,
param_types: &amp;[<a class="enum" href="enum.BasicMetadataTypeEnum.html" title="enum inkwell::types::BasicMetadataTypeEnum">BasicMetadataTypeEnum</a>&lt;'ctx&gt;],
is_var_args: <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.bool.html">bool</a>
) -&gt; <a class="struct" href="struct.FunctionType.html" title="struct inkwell::types::FunctionType">FunctionType</a>&lt;'ctx&gt;</h4></section></summary><div class="docblock"><p>Create a <code>FunctionType</code> with this <code>BasicType</code> as its return type.</p>
<h5 id="example"><a class="doc-anchor" href="#example">§</a>Example:</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>inkwell::context::Context;
<span class="kw">use </span>inkwell::types::BasicType;
<span class="kw">let </span>context = Context::create();
<span class="kw">let </span>int = context.i32_type();
<span class="kw">let </span>int_basic_type = int.as_basic_type_enum();
<span class="macro">assert_eq!</span>(int_basic_type.fn_type(<span class="kw-2">&amp;</span>[], <span class="bool-val">false</span>), int.fn_type(<span class="kw-2">&amp;</span>[], <span class="bool-val">false</span>));</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_sized" class="method"><a class="src rightside" href="../../src/inkwell/types/traits.rs.html#77-79">source</a><h4 class="code-header">fn <a href="#method.is_sized" class="fn">is_sized</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Determines whether or not this <code>BasicType</code> is sized or not.
For example, opaque structs are unsized.</p>
<h5 id="example-1"><a class="doc-anchor" href="#example-1">§</a>Example</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>inkwell::context::Context;
<span class="kw">use </span>inkwell::types::BasicType;
<span class="kw">let </span>context = Context::create();
<span class="kw">let </span>f32_type = context.f32_type();
<span class="kw">let </span>f32_vec_type = f32_type.vec_type(<span class="number">40</span>);
<span class="macro">assert!</span>(f32_vec_type.is_sized());</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.size_of" class="method"><a class="src rightside" href="../../src/inkwell/types/traits.rs.html#94-96">source</a><h4 class="code-header">fn <a href="#method.size_of" class="fn">size_of</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.77.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../values/struct.IntValue.html" title="struct inkwell::values::IntValue">IntValue</a>&lt;'ctx&gt;&gt;</h4></section></summary><div class="docblock"><p>Gets the size of this <code>BasicType</code>. Value may vary depending on the target architecture.</p>
<h5 id="example-2"><a class="doc-anchor" href="#example-2">§</a>Example</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>inkwell::context::Context;
<span class="kw">use </span>inkwell::types::BasicType;
<span class="kw">let </span>context = Context::create();
<span class="kw">let </span>f32_type = context.f32_type();
<span class="kw">let </span>f32_basic_type = f32_type.as_basic_type_enum();
<span class="kw">let </span>f32_type_size = f32_basic_type.size_of();</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.array_type" class="method"><a class="src rightside" href="../../src/inkwell/types/traits.rs.html#111-113">source</a><h4 class="code-header">fn <a href="#method.array_type" class="fn">array_type</a>(&amp;self, size: <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.u32.html">u32</a>) -&gt; <a class="struct" href="struct.ArrayType.html" title="struct inkwell::types::ArrayType">ArrayType</a>&lt;'ctx&gt;</h4></section></summary><div class="docblock"><p>Create an <code>ArrayType</code> with this <code>BasicType</code> as its elements.</p>
<p>Example:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>inkwell::context::Context;
<span class="kw">use </span>inkwell::types::BasicType;
<span class="kw">let </span>context = Context::create();
<span class="kw">let </span>int = context.i32_type();
<span class="kw">let </span>int_basic_type = int.as_basic_type_enum();
<span class="macro">assert_eq!</span>(int_basic_type.array_type(<span class="number">32</span>), int.array_type(<span class="number">32</span>));</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ptr_type" class="method"><a class="src rightside" href="../../src/inkwell/types/traits.rs.html#129-131">source</a><h4 class="code-header">fn <a href="#method.ptr_type" class="fn">ptr_type</a>(&amp;self, address_space: <a class="struct" href="../struct.AddressSpace.html" title="struct inkwell::AddressSpace">AddressSpace</a>) -&gt; <a class="struct" href="struct.PointerType.html" title="struct inkwell::types::PointerType">PointerType</a>&lt;'ctx&gt;</h4></section></summary><div class="docblock"><p>Create a <code>PointerType</code> that points to this <code>BasicType</code>.</p>
<p>Example:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>inkwell::context::Context;
<span class="kw">use </span>inkwell::types::BasicType;
<span class="kw">use </span>inkwell::AddressSpace;
<span class="kw">let </span>context = Context::create();
<span class="kw">let </span>int = context.i32_type();
<span class="kw">let </span>int_basic_type = int.as_basic_type_enum();
<span class="kw">let </span>addr_space = AddressSpace::default();
<span class="macro">assert_eq!</span>(int_basic_type.ptr_type(addr_space), int.ptr_type(addr_space));</code></pre></div>
</div></details></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-BasicType%3C'ctx%3E-for-BasicTypeEnum%3C'ctx%3E" class="impl"><a class="src rightside" href="../../src/inkwell/types/traits.rs.html#161">source</a><a href="#impl-BasicType%3C'ctx%3E-for-BasicTypeEnum%3C'ctx%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'ctx&gt; <a class="trait" href="trait.BasicType.html" title="trait inkwell::types::BasicType">BasicType</a>&lt;'ctx&gt; for <a class="enum" href="enum.BasicTypeEnum.html" title="enum inkwell::types::BasicTypeEnum">BasicTypeEnum</a>&lt;'ctx&gt;</h3></section><section id="impl-BasicType%3C'ctx%3E-for-ArrayType%3C'ctx%3E" class="impl"><a class="src rightside" href="../../src/inkwell/types/traits.rs.html#161">source</a><a href="#impl-BasicType%3C'ctx%3E-for-ArrayType%3C'ctx%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'ctx&gt; <a class="trait" href="trait.BasicType.html" title="trait inkwell::types::BasicType">BasicType</a>&lt;'ctx&gt; for <a class="struct" href="struct.ArrayType.html" title="struct inkwell::types::ArrayType">ArrayType</a>&lt;'ctx&gt;</h3></section><section id="impl-BasicType%3C'ctx%3E-for-FloatType%3C'ctx%3E" class="impl"><a class="src rightside" href="../../src/inkwell/types/traits.rs.html#161">source</a><a href="#impl-BasicType%3C'ctx%3E-for-FloatType%3C'ctx%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'ctx&gt; <a class="trait" href="trait.BasicType.html" title="trait inkwell::types::BasicType">BasicType</a>&lt;'ctx&gt; for <a class="struct" href="struct.FloatType.html" title="struct inkwell::types::FloatType">FloatType</a>&lt;'ctx&gt;</h3></section><section id="impl-BasicType%3C'ctx%3E-for-IntType%3C'ctx%3E" class="impl"><a class="src rightside" href="../../src/inkwell/types/traits.rs.html#161">source</a><a href="#impl-BasicType%3C'ctx%3E-for-IntType%3C'ctx%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'ctx&gt; <a class="trait" href="trait.BasicType.html" title="trait inkwell::types::BasicType">BasicType</a>&lt;'ctx&gt; for <a class="struct" href="struct.IntType.html" title="struct inkwell::types::IntType">IntType</a>&lt;'ctx&gt;</h3></section><section id="impl-BasicType%3C'ctx%3E-for-PointerType%3C'ctx%3E" class="impl"><a class="src rightside" href="../../src/inkwell/types/traits.rs.html#161">source</a><a href="#impl-BasicType%3C'ctx%3E-for-PointerType%3C'ctx%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'ctx&gt; <a class="trait" href="trait.BasicType.html" title="trait inkwell::types::BasicType">BasicType</a>&lt;'ctx&gt; for <a class="struct" href="struct.PointerType.html" title="struct inkwell::types::PointerType">PointerType</a>&lt;'ctx&gt;</h3></section><section id="impl-BasicType%3C'ctx%3E-for-StructType%3C'ctx%3E" class="impl"><a class="src rightside" href="../../src/inkwell/types/traits.rs.html#161">source</a><a href="#impl-BasicType%3C'ctx%3E-for-StructType%3C'ctx%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'ctx&gt; <a class="trait" href="trait.BasicType.html" title="trait inkwell::types::BasicType">BasicType</a>&lt;'ctx&gt; for <a class="struct" href="struct.StructType.html" title="struct inkwell::types::StructType">StructType</a>&lt;'ctx&gt;</h3></section><section id="impl-BasicType%3C'ctx%3E-for-VectorType%3C'ctx%3E" class="impl"><a class="src rightside" href="../../src/inkwell/types/traits.rs.html#161">source</a><a href="#impl-BasicType%3C'ctx%3E-for-VectorType%3C'ctx%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'ctx&gt; <a class="trait" href="trait.BasicType.html" title="trait inkwell::types::BasicType">BasicType</a>&lt;'ctx&gt; for <a class="struct" href="struct.VectorType.html" title="struct inkwell::types::VectorType">VectorType</a>&lt;'ctx&gt;</h3></section></div><script src="../../trait.impl/inkwell/types/traits/trait.BasicType.js" async></script></section></div></main></body></html>