source: doc/rob_thesis/examples/scope_guard.h @ 35dd0f42

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsdeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since 35dd0f42 was 9c14ae9, checked in by Rob Schluntz <rschlunt@…>, 8 years ago

add thesis source

  • Property mode set to 100644
File size: 533 bytes
RevLine 
[9c14ae9]1#ifndef SCOPE_GUARD_H
2#define SCOPE_GUARD_H
3
4struct ScopeGuard {
5  void (*fn)(void *);
6  // Args args;
7};
8
9// forall(ttype Args, ttype Ret)
10// void ?{}(ScopeGuard(Args, Ret) * this) {
11void ?{}(ScopeGuard * this) {
12
13}
14
15// // inline
16// forall(ttype Args, ttype Ret)
17// void ?{}(ScopeGuard(Args, Ret) * this, Ret (*fn)(Args), Args args) {
18//   this->fn = fn;
19//   // this->args = args;
20// }
21
22// inline
23// forall(ttype Args, ttype Ret)
24// void ^?{}(ScopeGuard(Args, Ret) * this) {
25void ^?{}(ScopeGuard * this) {
26  this->fn(0);
27}
28
29#endif
Note: See TracBrowser for help on using the repository browser.