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]

Public Member Functions

 Driver ()
 
Getters
Flagsflags ()
 
Loglog ()
 
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 auto & imports ()
 
const fs::path * add_import (fs::path, Sym)
 Yields a fs::path* if not already added that you can use in Location; returns nullptr otherwise.
 
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 pass (flags_t flags)
 
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_import()

const fs::path * mim::Driver::add_import ( fs::path path,
Sym sym )

Yields a fs::path* if not already added that you can use in Location; returns nullptr otherwise.

Definition at line 45 of file driver.cpp.

◆ add_search_path()

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

Definition at line 37 of file driver.h.

Referenced by Driver(), and main().

◆ backend()

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

Definition at line 76 of file driver.h.

References mim::lookup().

Referenced by main().

◆ flags()

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 pass().

◆ get_fun_ptr() [1/3]

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

Definition at line 65 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 91 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 62 of file driver.h.

References get_fun_ptr().

◆ imports()

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

Definition at line 47 of file driver.h.

Referenced by main().

◆ is_loaded()

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

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

References load().

Referenced by load().

◆ load() [2/2]

◆ log()

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

Definition at line 24 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 74 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 75 of file driver.h.

References normalizer().

Referenced by normalizer().

◆ pass()

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

Definition at line 73 of file driver.h.

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

Referenced by mim::optimize().

◆ search_paths()

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

Definition at line 36 of file driver.h.

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

◆ world()

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

Definition at line 25 of file driver.h.

Referenced by main().


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