mCRL2
Loading...
Searching...
No Matches
construction_utility.h
Go to the documentation of this file.
1// Author(s): Jeroen van der Wulp
2// Copyright: see the accompanying file COPYING or copy at
3// https://github.com/mCRL2org/mCRL2/blob/master/COPYING
4//
5// Distributed under the Boost Software License, Version 1.0.
6// (See accompanying file LICENSE_1_0.txt or copy at
7// http://www.boost.org/LICENSE_1_0.txt)
8//
11
12#ifndef MCRL2_CORE_DETAIL_CONSTRUCTION_UTILITY_H
13#define MCRL2_CORE_DETAIL_CONSTRUCTION_UTILITY_H
14
16
17namespace mcrl2
18{
19namespace core
20{
21namespace detail
22{
23
24// Component that helps applying the Singleton design pattern
25template < typename Derived, typename Expression = atermpp::aterm >
27{
28 public:
29 static const Expression& instance()
30 {
31 static Expression single_instance = Expression(Derived::initialise());
32 return single_instance;
33 }
34
39
40 protected:
42};
43
44template < typename Derived >
45struct singleton_identifier : public singleton_expression< Derived, core::identifier_string >
46 {};
47
48} // namespace detail
49} // namespace core
50} // namespace mcrl2
51
52
53#endif
54
singleton_expression & operator=(singleton_expression &&)=delete
singleton_expression & operator=(const singleton_expression &)=delete
singleton_expression(singleton_expression &&)=delete
singleton_expression(const singleton_expression &)=delete
aterm representations of identifier strings.
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
Definition indexed_set.h:72