MimIR 0.1
MimIR is my Intermediate Representation
Loading...
Searching...
No Matches
mim::Driver Class Reference

Some "global" variables needed all over the place. More...

#include <mim/driver.h>

Inheritance diagram for mim::Driver:
[legend]

Classes

class  Imports
 

Public Member Functions

 Driver ()
 
Getters
Flagsflags ()
 
const Flagsflags () const
 
Loglog () const
 
Worldworld ()
 
Manage Search Paths

Search paths for plugins are in the following order:

  1. The empty path. Used as prefix to look into current working directory without resorting to an absolute path.
  2. All further user-specified paths via Driver::add_search_path; paths added first will also be searched first.
  3. All paths specified in the environment variable MIM_PLUGIN_PATH.
  4. path/to/mim.exe/../../lib/mim
  5. CMAKE_INSTALL_PREFIX/lib/mim
const auto & search_paths () const
 
void add_search_path (fs::path path)
 
Manage Imports

This is a list of pairs where each pair contains:

  1. The fs::path used during import,
  2. The name as Symbol used in the import directive or in Parser::import.
const Importsimports () const
 
Importsimports ()
 
Load Plugin

Finds and loads a shared object file that implements the MimIR Plugin name.

If name is an absolute path to a .so/.dll file, this is used. Otherwise, "name", "libmim_name.so" (Linux, Mac), "mim_name.dll" (Win) are searched for in Driver::search_paths().

void load (Sym name)
 
void load (const std::string &name)
 
bool is_loaded (Sym sym) const
 
void * get_fun_ptr (Sym plugin, const char *name)
 
template<class F>
auto get_fun_ptr (Sym plugin, const char *name)
 
template<class F>
auto get_fun_ptr (const char *plugin, const char *name)
 
Manage Plugins

All these lookups yield nullptr if the key has not been found.

auto stage (flags_t flags)
 
const auto & stages () const
 
auto normalizer (flags_t flags) const
 
auto normalizer (plugin_t d, tag_t t, sub_t s) const
 
auto backend (std::string_view name)
 

Detailed Description

Some "global" variables needed all over the place.

Well, there are not really global - that's the point of this class.

Definition at line 17 of file driver.h.

Constructor & Destructor Documentation

◆ Driver()

mim::Driver::Driver ( )

Member Function Documentation

◆ add_search_path()

void mim::Driver::add_search_path ( fs::path path)
inline

Definition at line 38 of file driver.h.

Referenced by Driver(), and main().

◆ backend()

auto mim::Driver::backend ( std::string_view name)
inline

Definition at line 107 of file driver.h.

References mim::lookup().

Referenced by main().

◆ flags() [1/2]

Flags & mim::Driver::flags ( )
inline

Definition at line 23 of file driver.h.

Referenced by mim::World::flags(), mim::ast::load_plugins(), main(), normalizer(), and stage().

◆ flags() [2/2]

const Flags & mim::Driver::flags ( ) const
inline

Definition at line 24 of file driver.h.

◆ get_fun_ptr() [1/3]

template<class F>
auto mim::Driver::get_fun_ptr ( const char * plugin,
const char * name )
inline

Definition at line 95 of file driver.h.

References get_fun_ptr().

◆ get_fun_ptr() [2/3]

void * mim::Driver::get_fun_ptr ( Sym plugin,
const char * name )

Definition at line 88 of file driver.cpp.

References mim::dl::get(), and mim::lookup().

Referenced by get_fun_ptr(), and get_fun_ptr().

◆ get_fun_ptr() [3/3]

template<class F>
auto mim::Driver::get_fun_ptr ( Sym plugin,
const char * name )
inline

Definition at line 90 of file driver.h.

References get_fun_ptr().

◆ imports() [1/2]

Imports & mim::Driver::imports ( )
inline

Definition at line 75 of file driver.h.

◆ imports() [2/2]

const Imports & mim::Driver::imports ( ) const
inline

Definition at line 74 of file driver.h.

◆ is_loaded()

bool mim::Driver::is_loaded ( Sym sym) const
inline

Definition at line 86 of file driver.h.

References mim::lookup().

Referenced by load().

◆ load() [1/2]

void mim::Driver::load ( const std::string & name)
inline

Definition at line 85 of file driver.h.

References load().

Referenced by load().

◆ load() [2/2]

◆ log()

Log & mim::Driver::log ( ) const
inline

Definition at line 25 of file driver.h.

Referenced by mim::World::log(), and main().

◆ normalizer() [1/2]

auto mim::Driver::normalizer ( flags_t flags) const
inline

Definition at line 105 of file driver.h.

References flags(), and mim::lookup().

◆ normalizer() [2/2]

auto mim::Driver::normalizer ( plugin_t d,
tag_t t,
sub_t s ) const
inline

Definition at line 106 of file driver.h.

References normalizer().

Referenced by normalizer().

◆ search_paths()

const auto & mim::Driver::search_paths ( ) const
inline

Definition at line 37 of file driver.h.

Referenced by Driver(), load(), and main().

◆ stage()

auto mim::Driver::stage ( flags_t flags)
inline

Definition at line 103 of file driver.h.

References flags(), and mim::lookup().

Referenced by mim::optimize(), and mim::Stage::recreate().

◆ stages()

const auto & mim::Driver::stages ( ) const
inline

Definition at line 104 of file driver.h.

◆ world()

World & mim::Driver::world ( )
inline

Definition at line 26 of file driver.h.

Referenced by main().


The documentation for this class was generated from the following files: