Stride Reference Manual
1.0
Main Page
Namespaces
Classes
Files
File List
File Members
etc.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <memory>
4
5
namespace
stride
{
6
namespace
util
{
7
8
// Like golang's 'defer' statement
9
10
template
<
typename
Func>
11
class
Defer
{
12
public
:
13
Defer
(
const
Func& f) :
m_func
(f) {}
14
15
~Defer
() {
m_func
(); }
16
17
private
:
18
const
Func&
m_func
;
19
};
20
21
template
<
typename
Func>
22
Defer<Func>
_defer
(
const
Func& f) {
23
return
Defer<Func>
(f);
24
}
25
26
#define __defer_name(name) _defer_ ## name
27
#define __defer(line, s) auto __defer_name(line) = stride::util::_defer([&](){ s ; });
28
#define defer(s) __defer(__LINE__, s)
29
30
}
31
}
32
33
34
#if __cplusplus <= 201103L
35
36
namespace
std
{
37
template
<
typename
T,
typename
... Args>
38
std::unique_ptr<T>
make_unique
(Args&& ... args) {
39
return
std::unique_ptr<T>(
new
T(std::forward<Args>(args)...));
40
}
41
}
42
43
#endif
stride::util::Defer::Defer
Defer(const Func &f)
Definition:
etc.h:13
stride::util::_defer
Defer< Func > _defer(const Func &f)
Definition:
etc.h:22
stride
Time Dependent Person DataType.
Definition:
NoBehaviour.h:17
stride::util::Defer::m_func
const Func & m_func
Definition:
etc.h:18
stride::util::Defer
Definition:
etc.h:11
stride::util::Defer::~Defer
~Defer()
Definition:
etc.h:15
std
STL namespace.
util
std::make_unique
std::unique_ptr< T > make_unique(Args &&...args)
Definition:
etc.h:38
main
cpp
util
etc.h
Generated on Tue Jun 27 2017 15:38:18 for Stride Reference Manual by
1.8.11