From 70317569c6dcd9809ed4a8c425777e653ec6ca08 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Mon, 1 May 2017 18:24:31 +0300 Subject: Add hxx extension for headers --- build2/module | 114 ---------------------------------------------------------- 1 file changed, 114 deletions(-) delete mode 100644 build2/module (limited to 'build2/module') diff --git a/build2/module b/build2/module deleted file mode 100644 index 7c4672f..0000000 --- a/build2/module +++ /dev/null @@ -1,114 +0,0 @@ -// file : build2/module -*- C++ -*- -// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#ifndef BUILD2_MODULE -#define BUILD2_MODULE - -#include - -#include -#include - -#include -#include - -namespace build2 -{ - class scope; - class location; - - class module_base - { - public: - virtual - ~module_base () = default; - }; - - using module_boot_function = - void (scope& root, - const location&, - unique_ptr&); - - // Return false if the module configuration (normally based on the default - // values) was unsuccessful but this is not (yet) an error. One example - // would be the optional use of a module. Or a module might remain - // unconfigured for as long as it is actually not used (e.g., install, - // dist). The return value is used to set the .configured variable. - // - using module_init_function = - bool (scope& root, - scope& base, - const location&, - unique_ptr&, - bool first, // First time for this project. - bool optional, // Loaded with using? (optional module). - const variable_map& hints); // Configuration hints (see below). - - struct module_functions - { - module_boot_function* boot; - module_init_function* init; - }; - - // The register() function will be written in C++ and will be called from - // C++ but we need to suppress name mangling to be able to use dlsym() and - // equivalent. - // - extern "C" - using module_register_function = module_functions (); - - // Loaded modules state. - // - struct module_state - { - bool boot; // True if the module boot'ed but not yet init'ed. - module_init_function* init; - unique_ptr module; - const location loc; // Boot location. - }; - - struct loaded_module_map: std::map - { - template - T* - lookup (const string& name) const - { - auto i (find (name)); - return i != end () - ? static_cast (i->second.module.get ()) - : nullptr; - } - }; - - // Load and boot the specified module. - // - void - boot_module (scope& root, const string& name, const location&); - - // Load (if not already loaded) and initialize the specified module. Used - // by the parser but also by some modules to load prerequisite modules. - // Return true if the module was both successfully loaded and configured - // (false can only be returned if optional). - // - // The config_hints variable map can be used to pass configuration hints - // from one module to another. For example, the cxx modude may pass the - // target platform (which was extracted from the C++ compiler) to the bin - // module (which may not always be able to extract the same information from - // its tools). - // - bool - load_module (scope& root, - scope& base, - const string& name, - const location&, - bool optional = false, - const variable_map& config_hints = variable_map ()); - - // Builtin modules. - // - using available_module_map = std::map; - extern available_module_map builtin_modules; -} - -#endif // BUILD2_MODULE -- cgit v1.1