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 tracks:

  1. The distinct files that have already been parsed to avoid reparsing them,
  2. The distinct import or plugin directives that should be emitted again later.
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 19 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 40 of file driver.h.

Referenced by Driver(), and main().

◆ backend()

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

Definition at line 114 of file driver.h.

References mim::lookup().

Referenced by main().

◆ flags() [1/2]

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

Definition at line 25 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 26 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 102 of file driver.h.

References get_fun_ptr().

◆ get_fun_ptr() [2/3]

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

Definition at line 97 of file driver.h.

References get_fun_ptr().

◆ get_fun_ptr() [3/3]

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

Definition at line 109 of file driver.cpp.

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

Referenced by get_fun_ptr(), and get_fun_ptr().

◆ imports() [1/2]

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

Definition at line 82 of file driver.h.

◆ imports() [2/2]

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

Definition at line 81 of file driver.h.

◆ is_loaded()

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

Definition at line 93 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 92 of file driver.h.

References load().

Referenced by load().

◆ load() [2/2]

◆ log()

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

Definition at line 27 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 112 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 113 of file driver.h.

References normalizer().

Referenced by normalizer().

◆ search_paths()

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

Definition at line 39 of file driver.h.

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

◆ stage()

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

Definition at line 110 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 111 of file driver.h.

◆ world()

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

Definition at line 28 of file driver.h.

Referenced by main().


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