mirror of
https://github.com/BlackMATov/defer.hpp.git
synced 2025-12-13 07:25:39 +07:00
rename DEFER to DEFER_HPP
This commit is contained in:
10
README.md
10
README.md
@@ -51,7 +51,7 @@ target_link_libraries(your_project_target defer.hpp)
|
|||||||
```cpp
|
```cpp
|
||||||
if ( FILE *file = std::fopen("output.txt", "a") ) {
|
if ( FILE *file = std::fopen("output.txt", "a") ) {
|
||||||
// defer will close the file after scope or on exception
|
// defer will close the file after scope or on exception
|
||||||
DEFER([file]{ std::fclose(file); });
|
DEFER_HPP([file]{ std::fclose(file); });
|
||||||
|
|
||||||
const char buffer[] = "hello world\n";
|
const char buffer[] = "hello world\n";
|
||||||
if ( 12 != std::fwrite(buffer, sizeof(buffer[0]), std::strlen(buffer), file) ) {
|
if ( 12 != std::fwrite(buffer, sizeof(buffer[0]), std::strlen(buffer), file) ) {
|
||||||
@@ -65,10 +65,10 @@ if ( FILE *file = std::fopen("output.txt", "a") ) {
|
|||||||
```cpp
|
```cpp
|
||||||
if ( FILE *file = std::fopen("output.txt", "a") ) {
|
if ( FILE *file = std::fopen("output.txt", "a") ) {
|
||||||
// defer will close the file after scope or on exception
|
// defer will close the file after scope or on exception
|
||||||
DEFER([file]{ std::fclose(file); });
|
DEFER_HPP([file]{ std::fclose(file); });
|
||||||
|
|
||||||
// error defer will be called on exception
|
// error defer will be called on exception
|
||||||
ERROR_DEFER([]{
|
ERROR_DEFER_HPP([]{
|
||||||
std::cerr << "there is something wrong" << std::endl;
|
std::cerr << "there is something wrong" << std::endl;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -84,10 +84,10 @@ if ( FILE *file = std::fopen("output.txt", "a") ) {
|
|||||||
```cpp
|
```cpp
|
||||||
if ( FILE *file = std::fopen("output.txt", "a") ) {
|
if ( FILE *file = std::fopen("output.txt", "a") ) {
|
||||||
// defer will close the file after scope or on exception
|
// defer will close the file after scope or on exception
|
||||||
DEFER([file]{ std::fclose(file); });
|
DEFER_HPP([file]{ std::fclose(file); });
|
||||||
|
|
||||||
// return defer will be called on successful scope exit
|
// return defer will be called on successful scope exit
|
||||||
RETURN_DEFER([]{
|
RETURN_DEFER_HPP([]{
|
||||||
std::cout << "all is ok!" << std::endl;
|
std::cout << "all is ok!" << std::endl;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -120,31 +120,31 @@ namespace defer_hpp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define DEFER_IMPL_PP_CAT(x, y) DEFER_IMPL_PP_CAT_I(x, y)
|
#define DEFER_HPP_IMPL_PP_CAT(x, y) DEFER_HPP_IMPL_PP_CAT_I(x, y)
|
||||||
#define DEFER_IMPL_PP_CAT_I(x, y) x ## y
|
#define DEFER_HPP_IMPL_PP_CAT_I(x, y) x ## y
|
||||||
|
|
||||||
#ifdef __COUNTER__
|
#ifdef __COUNTER__
|
||||||
#define DEFER(...)\
|
#define DEFER_HPP(...)\
|
||||||
auto DEFER_IMPL_PP_CAT(generated_defer_, __COUNTER__) =\
|
auto DEFER_HPP_IMPL_PP_CAT(generated_defer_, __COUNTER__) =\
|
||||||
::defer_hpp::make_defer(__VA_ARGS__)
|
::defer_hpp::make_defer(__VA_ARGS__)
|
||||||
|
|
||||||
#define ERROR_DEFER(...)\
|
#define ERROR_DEFER_HPP(...)\
|
||||||
auto DEFER_IMPL_PP_CAT(generated_error_defer_, __COUNTER__) =\
|
auto DEFER_HPP_IMPL_PP_CAT(generated_error_defer_, __COUNTER__) =\
|
||||||
::defer_hpp::make_error_defer(__VA_ARGS__)
|
::defer_hpp::make_error_defer(__VA_ARGS__)
|
||||||
|
|
||||||
#define RETURN_DEFER(...)\
|
#define RETURN_DEFER_HPP(...)\
|
||||||
auto DEFER_IMPL_PP_CAT(generated_return_defer_, __COUNTER__) =\
|
auto DEFER_HPP_IMPL_PP_CAT(generated_return_defer_, __COUNTER__) =\
|
||||||
::defer_hpp::make_return_defer(__VA_ARGS__)
|
::defer_hpp::make_return_defer(__VA_ARGS__)
|
||||||
#else
|
#else
|
||||||
#define DEFER(...)\
|
#define DEFER_HPP(...)\
|
||||||
auto DEFER_IMPL_PP_CAT(generated_defer_, __LINE__) =\
|
auto DEFER_HPP_IMPL_PP_CAT(generated_defer_, __LINE__) =\
|
||||||
::defer_hpp::make_defer(__VA_ARGS__)
|
::defer_hpp::make_defer(__VA_ARGS__)
|
||||||
|
|
||||||
#define ERROR_DEFER(...)\
|
#define ERROR_DEFER_HPP(...)\
|
||||||
auto DEFER_IMPL_PP_CAT(generated_error_defer_, __LINE__) =\
|
auto DEFER_HPP_IMPL_PP_CAT(generated_error_defer_, __LINE__) =\
|
||||||
::defer_hpp::make_error_defer(__VA_ARGS__)
|
::defer_hpp::make_error_defer(__VA_ARGS__)
|
||||||
|
|
||||||
#define RETURN_DEFER(...)\
|
#define RETURN_DEFER_HPP(...)\
|
||||||
auto DEFER_IMPL_PP_CAT(generated_return_defer_, __LINE__) =\
|
auto DEFER_HPP_IMPL_PP_CAT(generated_return_defer_, __LINE__) =\
|
||||||
::defer_hpp::make_return_defer(__VA_ARGS__)
|
::defer_hpp::make_return_defer(__VA_ARGS__)
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ TEST_CASE("examples") {
|
|||||||
SECTION("basic_defer") {
|
SECTION("basic_defer") {
|
||||||
if ( FILE *file = std::fopen("output.txt", "a") ) {
|
if ( FILE *file = std::fopen("output.txt", "a") ) {
|
||||||
// defer will close the file after scope or on exception
|
// defer will close the file after scope or on exception
|
||||||
DEFER([file]{ std::fclose(file); });
|
DEFER_HPP([file]{ std::fclose(file); });
|
||||||
|
|
||||||
const char buffer[] = "hello world\n";
|
const char buffer[] = "hello world\n";
|
||||||
if ( 12 != std::fwrite(buffer, sizeof(buffer[0]), std::strlen(buffer), file) ) {
|
if ( 12 != std::fwrite(buffer, sizeof(buffer[0]), std::strlen(buffer), file) ) {
|
||||||
@@ -29,10 +29,10 @@ TEST_CASE("examples") {
|
|||||||
SECTION("error_defer") {
|
SECTION("error_defer") {
|
||||||
if ( FILE *file = std::fopen("output.txt", "a") ) {
|
if ( FILE *file = std::fopen("output.txt", "a") ) {
|
||||||
// defer will close the file after scope or on exception
|
// defer will close the file after scope or on exception
|
||||||
DEFER([file]{ std::fclose(file); });
|
DEFER_HPP([file]{ std::fclose(file); });
|
||||||
|
|
||||||
// error defer will be called on exception
|
// error defer will be called on exception
|
||||||
ERROR_DEFER([]{
|
ERROR_DEFER_HPP([]{
|
||||||
std::cerr << "there is something wrong" << std::endl;
|
std::cerr << "there is something wrong" << std::endl;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -46,10 +46,10 @@ TEST_CASE("examples") {
|
|||||||
SECTION("return_defer") {
|
SECTION("return_defer") {
|
||||||
if ( FILE *file = std::fopen("output.txt", "a") ) {
|
if ( FILE *file = std::fopen("output.txt", "a") ) {
|
||||||
// defer will close the file after scope or on exception
|
// defer will close the file after scope or on exception
|
||||||
DEFER([file]{ std::fclose(file); });
|
DEFER_HPP([file]{ std::fclose(file); });
|
||||||
|
|
||||||
// return defer will be called on successful scope exit
|
// return defer will be called on successful scope exit
|
||||||
RETURN_DEFER([]{
|
RETURN_DEFER_HPP([]{
|
||||||
std::cout << "all is ok!" << std::endl;
|
std::cout << "all is ok!" << std::endl;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ TEST_CASE("defer") {
|
|||||||
SECTION("simple") {
|
SECTION("simple") {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
{
|
{
|
||||||
DEFER([&i]{ ++i; });
|
DEFER_HPP([&i]{ ++i; });
|
||||||
REQUIRE(i == 0);
|
REQUIRE(i == 0);
|
||||||
}
|
}
|
||||||
REQUIRE(i == 1);
|
REQUIRE(i == 1);
|
||||||
@@ -26,7 +26,7 @@ TEST_CASE("defer") {
|
|||||||
SECTION("simple_with_arg") {
|
SECTION("simple_with_arg") {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
{
|
{
|
||||||
DEFER([](int& i){ ++i; }, std::ref(i));
|
DEFER_HPP([](int& i){ ++i; }, std::ref(i));
|
||||||
REQUIRE(i == 0);
|
REQUIRE(i == 0);
|
||||||
}
|
}
|
||||||
REQUIRE(i == 1);
|
REQUIRE(i == 1);
|
||||||
@@ -35,7 +35,7 @@ TEST_CASE("defer") {
|
|||||||
SECTION("simple_with_args") {
|
SECTION("simple_with_args") {
|
||||||
int i = 0, j = 0;
|
int i = 0, j = 0;
|
||||||
{
|
{
|
||||||
DEFER([](int& i, int& j){ ++i; j += 2; }, std::ref(i), std::ref(j));
|
DEFER_HPP([](int& i, int& j){ ++i; j += 2; }, std::ref(i), std::ref(j));
|
||||||
REQUIRE(i == 0);
|
REQUIRE(i == 0);
|
||||||
REQUIRE(j == 0);
|
REQUIRE(j == 0);
|
||||||
}
|
}
|
||||||
@@ -46,7 +46,7 @@ TEST_CASE("defer") {
|
|||||||
SECTION("simple_with_exception") {
|
SECTION("simple_with_exception") {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
try {
|
try {
|
||||||
DEFER([&i]{ ++i; });
|
DEFER_HPP([&i]{ ++i; });
|
||||||
REQUIRE(i == 0);
|
REQUIRE(i == 0);
|
||||||
throw std::exception();
|
throw std::exception();
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -59,7 +59,7 @@ TEST_CASE("error_defer") {
|
|||||||
SECTION("simple") {
|
SECTION("simple") {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
{
|
{
|
||||||
ERROR_DEFER([&i]{ ++i; });
|
ERROR_DEFER_HPP([&i]{ ++i; });
|
||||||
REQUIRE(i == 0);
|
REQUIRE(i == 0);
|
||||||
}
|
}
|
||||||
REQUIRE(i == 0);
|
REQUIRE(i == 0);
|
||||||
@@ -68,7 +68,7 @@ TEST_CASE("error_defer") {
|
|||||||
SECTION("simple_with_arg") {
|
SECTION("simple_with_arg") {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
{
|
{
|
||||||
ERROR_DEFER([](int& i){ ++i; }, std::ref(i));
|
ERROR_DEFER_HPP([](int& i){ ++i; }, std::ref(i));
|
||||||
REQUIRE(i == 0);
|
REQUIRE(i == 0);
|
||||||
}
|
}
|
||||||
REQUIRE(i == 0);
|
REQUIRE(i == 0);
|
||||||
@@ -77,7 +77,7 @@ TEST_CASE("error_defer") {
|
|||||||
SECTION("simple_with_args") {
|
SECTION("simple_with_args") {
|
||||||
int i = 0, j = 0;
|
int i = 0, j = 0;
|
||||||
{
|
{
|
||||||
ERROR_DEFER([](int& i, int& j){ ++i; j += 2; }, std::ref(i), std::ref(j));
|
ERROR_DEFER_HPP([](int& i, int& j){ ++i; j += 2; }, std::ref(i), std::ref(j));
|
||||||
REQUIRE(i == 0);
|
REQUIRE(i == 0);
|
||||||
REQUIRE(j == 0);
|
REQUIRE(j == 0);
|
||||||
}
|
}
|
||||||
@@ -88,7 +88,7 @@ TEST_CASE("error_defer") {
|
|||||||
SECTION("simple_with_exception") {
|
SECTION("simple_with_exception") {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
try {
|
try {
|
||||||
ERROR_DEFER([&i]{ ++i; });
|
ERROR_DEFER_HPP([&i]{ ++i; });
|
||||||
REQUIRE(i == 0);
|
REQUIRE(i == 0);
|
||||||
throw std::exception();
|
throw std::exception();
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
@@ -101,7 +101,7 @@ TEST_CASE("return_defer") {
|
|||||||
SECTION("simple") {
|
SECTION("simple") {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
{
|
{
|
||||||
RETURN_DEFER([&i]{ ++i; });
|
RETURN_DEFER_HPP([&i]{ ++i; });
|
||||||
REQUIRE(i == 0);
|
REQUIRE(i == 0);
|
||||||
}
|
}
|
||||||
REQUIRE(i == 1);
|
REQUIRE(i == 1);
|
||||||
@@ -110,7 +110,7 @@ TEST_CASE("return_defer") {
|
|||||||
SECTION("simple_with_arg") {
|
SECTION("simple_with_arg") {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
{
|
{
|
||||||
RETURN_DEFER([](int& i){ ++i; }, std::ref(i));
|
RETURN_DEFER_HPP([](int& i){ ++i; }, std::ref(i));
|
||||||
REQUIRE(i == 0);
|
REQUIRE(i == 0);
|
||||||
}
|
}
|
||||||
REQUIRE(i == 1);
|
REQUIRE(i == 1);
|
||||||
@@ -119,7 +119,7 @@ TEST_CASE("return_defer") {
|
|||||||
SECTION("simple_with_args") {
|
SECTION("simple_with_args") {
|
||||||
int i = 0, j = 0;
|
int i = 0, j = 0;
|
||||||
{
|
{
|
||||||
RETURN_DEFER([](int& i, int& j){ ++i; j += 2; }, std::ref(i), std::ref(j));
|
RETURN_DEFER_HPP([](int& i, int& j){ ++i; j += 2; }, std::ref(i), std::ref(j));
|
||||||
REQUIRE(i == 0);
|
REQUIRE(i == 0);
|
||||||
REQUIRE(j == 0);
|
REQUIRE(j == 0);
|
||||||
}
|
}
|
||||||
@@ -130,7 +130,7 @@ TEST_CASE("return_defer") {
|
|||||||
SECTION("simple_with_exception") {
|
SECTION("simple_with_exception") {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
try {
|
try {
|
||||||
RETURN_DEFER([&i]{ ++i; });
|
RETURN_DEFER_HPP([&i]{ ++i; });
|
||||||
REQUIRE(i == 0);
|
REQUIRE(i == 0);
|
||||||
throw std::exception();
|
throw std::exception();
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
|
|||||||
Reference in New Issue
Block a user