LCOV - code coverage report
Current view: top level - gfx/skia/skia/src/pdf - SkScopeExit.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 4 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 9 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright 2016 Google Inc.
       3             :  *
       4             :  * Use of this source code is governed by a BSD-style license that can be
       5             :  * found in the LICENSE file.
       6             :  */
       7             : 
       8             : #ifndef SkScopeExit_DEFINED
       9             : #define SkScopeExit_DEFINED
      10             : 
      11             : #include "SkTypes.h"
      12             : 
      13             : /**
      14             :  * SK_AT_SCOPE_EXIT(stmt) evaluates stmt when the current scope ends.
      15             :  *
      16             :  * E.g.
      17             :  *    {
      18             :  *        int x = 5;
      19             :  *        {
      20             :  *           SK_AT_SCOPE_EXIT(x--);
      21             :  *           SkASSERT(x == 5);
      22             :  *        }
      23             :  *        SkASSERT(x == 4);
      24             :  *    }
      25             :  */
      26             : template <typename Fn>
      27             : class SkScopeExit {
      28             : public:
      29           0 :     SkScopeExit(Fn f) : fFn(std::move(f)) {}
      30           0 :     ~SkScopeExit() { fFn(); }
      31             : 
      32             : private:
      33             :     Fn fFn;
      34             : 
      35             :     SkScopeExit(           const SkScopeExit& ) = delete;
      36             :     SkScopeExit& operator=(const SkScopeExit& ) = delete;
      37             :     SkScopeExit(                 SkScopeExit&&) = delete;
      38             :     SkScopeExit& operator=(      SkScopeExit&&) = delete;
      39             : };
      40             : 
      41             : template <typename Fn>
      42           0 : inline SkScopeExit<Fn> SkMakeScopeExit(Fn&& fn) {
      43           0 :     return {std::move(fn)};
      44             : }
      45             : 
      46             : #define SK_AT_SCOPE_EXIT(stmt)                              \
      47             :     SK_UNUSED auto&& SK_MACRO_APPEND_LINE(at_scope_exit_) = \
      48             :         SkMakeScopeExit([&]() { stmt; });
      49             : 
      50             : #endif  // SkScopeExit_DEFINED

Generated by: LCOV version 1.13