add singleton template
This commit is contained in:
parent
86ac6b451d
commit
05e856f42d
@ -1,6 +1,6 @@
|
|||||||
executable(
|
executable(
|
||||||
'hack',
|
'hack',
|
||||||
'algorithms/main.cpp',
|
'utils/main.cpp',
|
||||||
dependencies : deps,
|
dependencies : deps,
|
||||||
cpp_args: args,
|
cpp_args: args,
|
||||||
include_directories : inc
|
include_directories : inc
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include "hack/logger/logger.hpp"
|
#include "hack/logger/logger.hpp"
|
||||||
#include "hack/utils/utils.hpp"
|
#include "hack/utils/utils.hpp"
|
||||||
|
#include "hack/utils/singleton.hpp"
|
||||||
#include "hack/utils/func_query.hpp"
|
#include "hack/utils/func_query.hpp"
|
||||||
|
|
||||||
int f(int a)
|
int f(int a)
|
||||||
@ -32,6 +33,14 @@ struct counter_test_2
|
|||||||
int id;
|
int id;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct test_singleton : public hack::utils::singleton<test_singleton>
|
||||||
|
{
|
||||||
|
void print()
|
||||||
|
{
|
||||||
|
hack::log()("Print singleton");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
auto main(int argc, char *argv[]) -> int
|
auto main(int argc, char *argv[]) -> int
|
||||||
{
|
{
|
||||||
{// ex: utils::func_memory
|
{// ex: utils::func_memory
|
||||||
@ -83,6 +92,10 @@ auto main(int argc, char *argv[]) -> int
|
|||||||
query = hack::utils::make_query("super_function");
|
query = hack::utils::make_query("super_function");
|
||||||
hack::log()("query", query);
|
hack::log()("query", query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{// ex: singleton
|
||||||
|
test_singleton::get_instance().print();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
28
src/hack/utils/singleton.hpp
Normal file
28
src/hack/utils/singleton.hpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace hack::utils
|
||||||
|
{
|
||||||
|
struct no_copy
|
||||||
|
{
|
||||||
|
no_copy() = default;
|
||||||
|
no_copy(const no_copy&&) = delete;
|
||||||
|
no_copy operator=(const no_copy&&) = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct no_move
|
||||||
|
{
|
||||||
|
no_move() = default;
|
||||||
|
no_move(no_move&&) = delete;
|
||||||
|
no_move operator=(no_move&&) = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
struct singleton : public no_move, no_copy
|
||||||
|
{
|
||||||
|
static T& get_instance()
|
||||||
|
{
|
||||||
|
static T t;
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
@ -1,27 +1,42 @@
|
|||||||
inc += include_directories('.')
|
inc += include_directories('.')
|
||||||
|
|
||||||
headers = [
|
headers = [
|
||||||
'hack/logger/logger.hpp',
|
'hack/algorithms/sort.hpp',
|
||||||
|
|
||||||
|
'hack/concepts/concepts.hpp',
|
||||||
|
|
||||||
|
'hack/containers/containers.hpp',
|
||||||
|
'hack/containers/set.hpp',
|
||||||
|
'hack/containers/utils.hpp',
|
||||||
'hack/containers/vector.hpp',
|
'hack/containers/vector.hpp',
|
||||||
|
|
||||||
# 'hack/concepts/concepts.hpp',
|
'hack/iterators/associative_ostream_iterator.hpp',
|
||||||
# 'hack/iterators/associative_ostream_iterator.hpp',
|
'hack/iterators/sequence_ostream_iterator.hpp',
|
||||||
# 'hack/iterators/sequence_ostream_iterator.hpp',
|
|
||||||
# 'hack/math/matrix.hpp',
|
'hack/logger/logger.hpp',
|
||||||
# 'hack/math/max.hpp',
|
|
||||||
# 'hack/math/vector.hpp',
|
'hack/macros/macros.hpp',
|
||||||
# 'hack/range/range.hpp',
|
|
||||||
# 'hack/range/range.hpp',
|
'hack/math/matrix.hpp',
|
||||||
# 'hack/security/is_link.hpp',
|
'hack/math/max.hpp',
|
||||||
# 'hack/security/is_string.hpp',
|
'hack/math/vector.hpp',
|
||||||
# 'hack/security/uuid.hpp',
|
|
||||||
# 'hack/security/validate_email.hpp',
|
'hack/memory/make_ptr.hpp',
|
||||||
# 'hack/string/string.hpp',
|
|
||||||
# 'hack/string/string_concat_helper.hpp',
|
'hack/security/is_link.hpp',
|
||||||
# 'hack/string/utf8_len.hpp',
|
'hack/security/is_string.hpp',
|
||||||
# 'hack/utils/func_query.hpp',
|
'hack/security/uuid.hpp',
|
||||||
# 'hack/utils/utils.hpp',
|
'hack/security/validate_email.hpp',
|
||||||
# 'hack/view/color.hpp'
|
|
||||||
|
'hack/string/string.hpp',
|
||||||
|
'hack/string/string_concat_helper.hpp',
|
||||||
|
'hack/string/utf8_len.hpp',
|
||||||
|
|
||||||
|
'hack/utils/func_query.hpp',
|
||||||
|
'hack/utils/singleton.hpp',
|
||||||
|
'hack/utils/utils.hpp',
|
||||||
|
|
||||||
|
'hack/view/color.hpp'
|
||||||
]
|
]
|
||||||
|
|
||||||
sources = []
|
sources = []
|
||||||
|
Loading…
Reference in New Issue
Block a user