diff --git a/include/crucible/cleanup.h b/include/crucible/cleanup.h new file mode 100644 index 0000000..7096df4 --- /dev/null +++ b/include/crucible/cleanup.h @@ -0,0 +1,18 @@ +#ifndef CRUCIBLE_CLEANUP_H +#define CRUCIBLE_CLEANUP_H + +#include + +namespace crucible { + using namespace std; + + class Cleanup { + function m_cleaner; + public: + Cleanup(function func); + ~Cleanup(); + }; + +} + +#endif // CRUCIBLE_CLEANUP_H diff --git a/lib/Makefile b/lib/Makefile index 54df19d..e4ed743 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -3,8 +3,9 @@ TAG := $(shell git describe --always --dirty || echo UNKNOWN) default: libcrucible.so OBJS = \ - crc64.o \ chatter.o \ + cleanup.o \ + crc64.o \ error.o \ extentwalker.o \ fd.o \ diff --git a/lib/cleanup.cc b/lib/cleanup.cc new file mode 100644 index 0000000..91c92bb --- /dev/null +++ b/lib/cleanup.cc @@ -0,0 +1,17 @@ +#include + +namespace crucible { + + Cleanup::Cleanup(function func) : + m_cleaner(func) + { + } + + Cleanup::~Cleanup() + { + if (m_cleaner) { + m_cleaner(); + } + } + +}