tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

scoped_nsautorelease_pool.h (1702B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 // Copyright (c) 2008 The Chromium Authors. All rights reserved.
      4 // Use of this source code is governed by a BSD-style license that can be
      5 // found in the LICENSE file.
      6 
      7 #ifndef BASE_SCOPED_NSAUTORELEASE_POOL_H_
      8 #define BASE_SCOPED_NSAUTORELEASE_POOL_H_
      9 
     10 #include "base/basictypes.h"
     11 
     12 #if defined(XP_DARWIN)
     13 #  if defined(__OBJC__)
     14 @class NSAutoreleasePool;
     15 #  else   // __OBJC__
     16 class NSAutoreleasePool;
     17 #  endif  // __OBJC__
     18 #endif    // XP_DARWIN
     19 
     20 namespace base {
     21 
     22 // On the Mac, ScopedNSAutoreleasePool allocates an NSAutoreleasePool when
     23 // instantiated and sends it a -drain message when destroyed.  This allows an
     24 // autorelease pool to be maintained in ordinary C++ code without bringing in
     25 // any direct Objective-C dependency.
     26 //
     27 // On other platforms, ScopedNSAutoreleasePool is an empty object with no
     28 // effects.  This allows it to be used directly in cross-platform code without
     29 // ugly #ifdefs.
     30 class ScopedNSAutoreleasePool {
     31 public:
     32 #if !defined(XP_DARWIN)
     33  ScopedNSAutoreleasePool() {}
     34  void Recycle() {}
     35 #else   // XP_DARWIN
     36  ScopedNSAutoreleasePool();
     37  ~ScopedNSAutoreleasePool();
     38 
     39  // Clear out the pool in case its position on the stack causes it to be
     40  // alive for long periods of time (such as the entire length of the app).
     41  // Only use then when you're certain the items currently in the pool are
     42  // no longer needed.
     43  void Recycle();
     44 
     45 private:
     46  NSAutoreleasePool* autorelease_pool_;
     47 #endif  // XP_DARWIN
     48 
     49 private:
     50  DISALLOW_COPY_AND_ASSIGN(ScopedNSAutoreleasePool);
     51 };
     52 
     53 }  // namespace base
     54 
     55 #endif  // BASE_SCOPED_NSAUTORELEASE_POOL_H_