deal.II version GIT relicensing-6834-g5b78e6bcdf 2026-10-01 11:20:01+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
parameter_acceptor.h
Go to the documentation of this file.
1// -----------------------------------------------------------------------------
2//
3// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception OR LGPL-2.1-or-later
4// Copyright (C) 2017 - 2025 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Detailed license information governing the source code and contributions
9// can be found in LICENSE.md and CONTRIBUTING.md at the top level directory.
10//
11// -----------------------------------------------------------------------------
12
13#ifndef dealii_base_parameter_acceptor_h
14#define dealii_base_parameter_acceptor_h
15
16#include <deal.II/base/config.h>
17
21
22#include <boost/signals2/signal.hpp>
23
24#include <mutex>
25#include <set>
26#include <typeinfo>
27
29
31
32namespace internal
33{
38 struct ParameterAcceptorCompare;
39} // namespace internal
40
358{
359public:
366 ParameterAcceptor(const std::string &section_name = "");
367
371 unsigned int
372 get_acceptor_id() const;
373
377 virtual ~ParameterAcceptor() override;
378
415 static void
416 initialize(const std::string &filename = "",
417 const std::string &output_filename = "",
419 output_style_for_output_filename = ParameterHandler::Short,
421 const ParameterHandler::OutputStyle output_style_for_filename =
423
433 static void
434 initialize(std::istream &input_stream,
436
437
441 static void
442 clear();
443
449 virtual void
451
458 boost::signals2::signal<void()> declare_parameters_call_back;
459
465 virtual void
467
477 boost::signals2::signal<void()> parse_parameters_call_back;
478
484 static void
486
493 static void
495
501 std::string
502 get_section_name() const;
503
508 std::vector<std::string>
509 get_section_path() const;
510
520 template <typename ParameterType>
521 void
522 add_parameter(const std::string &entry,
523 ParameterType &parameter,
524 const std::string &documentation = "",
525 ParameterHandler &prm_ = prm,
526 const Patterns::PatternBase &pattern =
528
533
585 void
586 enter_subsection(const std::string &subsection);
587
592 void
594
598 void
600
605 void
607
608private:
612 static unsigned int
614
618 static std::mutex class_list_mutex;
619
624 static std::set<ParameterAcceptor *, internal::ParameterAcceptorCompare>
626
628 const unsigned int acceptor_id;
629
633 static const char sep = '/';
634
635protected:
637 const std::string section_name;
638
640 std::vector<std::string> subsections;
641};
642
643
644
694template <class SourceClass>
696{
697public:
703 template <typename... Args>
704 ParameterAcceptorProxy(const std::string &section_name, Args... args);
705
710 virtual void
712
717 virtual void
719};
720
721
722
723// Inline and template functions
724template <typename ParameterType>
725void
726ParameterAcceptor::add_parameter(const std::string &entry,
727 ParameterType &parameter,
728 const std::string &documentation,
729 ParameterHandler &prm,
730 const Patterns::PatternBase &pattern)
731{
733 prm.add_parameter(entry, parameter, documentation, pattern);
735}
736
737
738
739template <class SourceClass>
740template <typename... Args>
742 const std::string &section_name,
743 Args... args)
744 : SourceClass(args...)
745 , ParameterAcceptor(section_name)
746{}
747
748
749
750template <class SourceClass>
751void
753{
754 SourceClass::declare_parameters(prm);
755}
756
757
758
759template <class SourceClass>
760void
762{
763 SourceClass::parse_parameters(prm);
764}
765
767
768#endif
virtual void declare_parameters(ParameterHandler &prm) override
virtual void parse_parameters(ParameterHandler &prm) override
ParameterAcceptorProxy(const std::string &section_name, Args... args)
virtual ~ParameterAcceptor() override
std::string get_section_name() const
boost::signals2::signal< void()> declare_parameters_call_back
static const char sep
static void declare_all_parameters(ParameterHandler &prm=ParameterAcceptor::prm)
unsigned int get_acceptor_id() const
const unsigned int acceptor_id
const std::string section_name
std::vector< std::string > subsections
static void initialize(const std::string &filename="", const std::string &output_filename="", const ParameterHandler::OutputStyle output_style_for_output_filename=ParameterHandler::Short, ParameterHandler &prm=ParameterAcceptor::prm, const ParameterHandler::OutputStyle output_style_for_filename=ParameterHandler::DefaultStyle)
static ParameterHandler prm
void leave_my_subsection(ParameterHandler &prm)
void enter_subsection(const std::string &subsection)
virtual void parse_parameters(ParameterHandler &prm)
static unsigned int get_next_free_id()
static void parse_all_parameters(ParameterHandler &prm=ParameterAcceptor::prm)
boost::signals2::signal< void()> parse_parameters_call_back
void enter_my_subsection(ParameterHandler &prm)
static std::mutex class_list_mutex
static std::set< ParameterAcceptor *, internal::ParameterAcceptorCompare > class_list
void add_parameter(const std::string &entry, ParameterType &parameter, const std::string &documentation="", ParameterHandler &prm_=prm, const Patterns::PatternBase &pattern= *Patterns::Tools::Convert< ParameterType >::to_pattern())
virtual void declare_parameters(ParameterHandler &prm)
std::vector< std::string > get_section_path() const
void add_parameter(const std::string &entry, ParameterType &parameter, const std::string &documentation="", const Patterns::PatternBase &pattern= *Patterns::Tools::Convert< ParameterType >::to_pattern(), const bool has_to_be_set=false)
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:38
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:39