Skip to content
Snippets Groups Projects
Select Git revision
  • 4c734242d39ad45686cf89c8238161160b068cfc
  • develop default protected
  • feature/gmsh-reader
  • origin/stage/bouguettaia
  • feature/kinetic-schemes
  • feature/reconstruction
  • feature/local-dt-fsi
  • feature/composite-scheme-sources
  • feature/composite-scheme-other-fluxes
  • feature/serraille
  • feature/variational-hydro
  • feature/composite-scheme
  • hyperplastic
  • feature/polynomials
  • feature/gks
  • feature/implicit-solver-o2
  • feature/coupling_module
  • feature/implicit-solver
  • feature/merge-local-dt-fsi
  • master protected
  • feature/escobar-smoother
  • v0.5.0 protected
  • v0.4.1 protected
  • v0.4.0 protected
  • v0.3.0 protected
  • v0.2.0 protected
  • v0.1.0 protected
  • Kidder
  • v0.0.4 protected
  • v0.0.3 protected
  • v0.0.2 protected
  • v0 protected
  • v0.0.1 protected
33 results

MeshLessAcousticSolver.cpp

Blame
  • ASTModulesImporter.cpp 1.67 KiB
    #include <language/ast/ASTModulesImporter.hpp>
    
    #include <language/PEGGrammar.hpp>
    #include <language/utils/OperatorRepository.hpp>
    #include <utils/ConsoleManager.hpp>
    
    void
    ASTModulesImporter::_importModule(ASTNode& import_node)
    {
      Assert(import_node.is_type<language::import_instruction>());
      Assert(import_node.children[0]->is_type<language::module_name>());
    
      const ASTNode& module_name_node = *import_node.children[0];
      const std::string module_name   = module_name_node.string();
    
      if (auto [i_module_name, success] = m_imported_modules.insert(module_name); not success) {
        if (ConsoleManager::showPreamble()) {
          std::cout << " * ignoring  '" << rang::fgB::green << module_name << rang::style::reset
                    << "' module, already imported\n";
        }
        return;
      }
    
      if (ConsoleManager::showPreamble()) {
        std::cout << " * importing '" << rang::fgB::green << module_name << rang::style::reset << "' module\n";
      }
    
      m_module_repository.populateSymbolTable(module_name_node, m_symbol_table);
      m_module_repository.registerOperators(module_name);
    }
    
    void
    ASTModulesImporter::_importAllModules(ASTNode& node)
    {
      if (node.is_type<language::import_instruction>()) {
        this->_importModule(node);
      } else {
        for (auto& child : node.children) {
          this->_importAllModules(*child);
        }
      }
    }
    
    ASTModulesImporter::ASTModulesImporter(ASTNode& root_node) : m_symbol_table{*root_node.m_symbol_table}
    {
      Assert(root_node.is_root());
      OperatorRepository::instance().reset();
      m_module_repository.populateMandatorySymbolTable(root_node, m_symbol_table);
    
      this->_importAllModules(root_node);
    
      if (ConsoleManager::showPreamble()) {
        std::cout << " - loaded modules\n";
      }
    }