OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef BASE_MEMORY_SCOPED_HANDLE_H_ | |
6 #define BASE_MEMORY_SCOPED_HANDLE_H_ | |
7 | |
8 #include <stdio.h> | |
9 | |
10 #include "base/basictypes.h" | |
11 | |
12 class ScopedStdioHandle { | |
13 public: | |
14 ScopedStdioHandle() | |
15 : handle_(NULL) { } | |
16 | |
17 explicit ScopedStdioHandle(FILE* handle) | |
18 : handle_(handle) { } | |
19 | |
20 ~ScopedStdioHandle() { | |
21 Close(); | |
22 } | |
23 | |
24 void Close() { | |
25 if (handle_) { | |
26 fclose(handle_); | |
27 handle_ = NULL; | |
28 } | |
29 } | |
30 | |
31 FILE* get() const { return handle_; } | |
32 | |
33 FILE* Take() { | |
34 FILE* temp = handle_; | |
35 handle_ = NULL; | |
36 return temp; | |
37 } | |
38 | |
39 void Set(FILE* newhandle) { | |
40 Close(); | |
41 handle_ = newhandle; | |
42 } | |
43 | |
44 private: | |
45 FILE* handle_; | |
46 | |
47 DISALLOW_COPY_AND_ASSIGN(ScopedStdioHandle); | |
48 }; | |
49 | |
50 #endif // BASE_MEMORY_SCOPED_HANDLE_H_ | |
OLD | NEW |