Struct Module

Source
pub struct Module {
    pub name: String,
    pub source_file_name: String,
    pub data_layout: DataLayout,
    pub target_triple: Option<String>,
    pub functions: Vec<Function>,
    pub func_declarations: Vec<FunctionDeclaration>,
    pub global_vars: Vec<GlobalVariable>,
    pub global_aliases: Vec<GlobalAlias>,
    pub global_ifuncs: Vec<GlobalIFunc>,
    pub inline_assembly: String,
    pub types: Types,
}
Expand description

Fields§

§name: String

The name of the module

§source_file_name: String§data_layout: DataLayout§target_triple: Option<String>§functions: Vec<Function>

Functions which are defined (not just declared) in this Module. See LLVM 14 docs on Functions

§func_declarations: Vec<FunctionDeclaration>

Functions which are declared (but not defined) in this Module. See LLVM 14 docs on Functions

§global_vars: Vec<GlobalVariable>§global_aliases: Vec<GlobalAlias>§global_ifuncs: Vec<GlobalIFunc>§inline_assembly: String§types: Types

Holds a reference to all of the Types used in the Module, and facilitates lookups so you can get a TypeRef to the Type you want.

Implementations§

Source§

impl Module

Source

pub fn type_of<T: Typed + ?Sized>(&self, t: &T) -> TypeRef

Get the type of anything that is Typed.

Source

pub fn get_func_by_name(&self, name: &str) -> Option<&Function>

Get the Function having the given name (if any). Note that functions are named with Strings and not Names.

Note also that this will only find fully defined functions, not FunctionDeclarations.

Source

pub fn get_func_decl_by_name(&self, name: &str) -> Option<&FunctionDeclaration>

Get the FunctionDeclaration having the given name (if any). Note that functions are named with Strings and not Names.

Note also that this will only find function declarations, and will not find defined functions (use get_func_by_name() for that).

Source

pub fn get_global_var_by_name(&self, name: &Name) -> Option<&GlobalVariable>

Get the GlobalVariable having the given Name (if any).

Source

pub fn get_global_alias_by_name(&self, name: &Name) -> Option<&GlobalAlias>

Get the GlobalAlias having the given Name (if any).

Source

pub fn get_global_ifunc_by_name(&self, name: &Name) -> Option<&GlobalIFunc>

Get the GlobalIFunc having the given Name (if any).

Source

pub fn from_bc_path(path: impl AsRef<Path>) -> Result<Self, String>

Parse the LLVM bitcode (.bc) file at the given path to create a Module

Source

pub fn from_ir_path(path: impl AsRef<Path>) -> Result<Self, String>

Parse the LLVM text IR (.ll) file at the given path to create a Module

Source

pub fn from_ir_str(str: &str) -> Result<Self, String>

Parse the given string as LLVM text IR by copying to create a Module

Trait Implementations§

Source§

impl Clone for Module

Source§

fn clone(&self) -> Module

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl Freeze for Module

§

impl RefUnwindSafe for Module

§

impl Send for Module

§

impl Sync for Module

§

impl Unpin for Module

§

impl UnwindSafe for Module

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.