Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Side by Side Diff: base/memory/scoped_ptr.h

Issue 9195035: remove ; which breaks nacl_integration since they use -pedantic (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | base/memory/scoped_vector.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Scopers help you manage ownership of a pointer, helping you easily manage the 5 // Scopers help you manage ownership of a pointer, helping you easily manage the
6 // a pointer within a scope, and automatically destroying the pointer at the 6 // a pointer within a scope, and automatically destroying the pointer at the
7 // end of a scope. There are two main classes you will use, which correspond 7 // end of a scope. There are two main classes you will use, which correspond
8 // to the operators new/delete and new[]/delete[]. 8 // to the operators new/delete and new[]/delete[].
9 // 9 //
10 // Example usage (scoped_ptr): 10 // Example usage (scoped_ptr):
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 // automatically deletes the pointer it holds (if any). 87 // automatically deletes the pointer it holds (if any).
88 // That is, scoped_ptr<T> owns the T object that it points to. 88 // That is, scoped_ptr<T> owns the T object that it points to.
89 // Like a T*, a scoped_ptr<T> may hold either NULL or a pointer to a T object. 89 // Like a T*, a scoped_ptr<T> may hold either NULL or a pointer to a T object.
90 // Also like T*, scoped_ptr<T> is thread-compatible, and once you 90 // Also like T*, scoped_ptr<T> is thread-compatible, and once you
91 // dereference it, you get the thread safety guarantees of T. 91 // dereference it, you get the thread safety guarantees of T.
92 // 92 //
93 // The size of a scoped_ptr is small: 93 // The size of a scoped_ptr is small:
94 // sizeof(scoped_ptr<C>) == sizeof(C*) 94 // sizeof(scoped_ptr<C>) == sizeof(C*)
95 template <class C> 95 template <class C>
96 class scoped_ptr { 96 class scoped_ptr {
97 MOVE_ONLY_TYPE_FOR_CPP_03(scoped_ptr, RValue); 97 MOVE_ONLY_TYPE_FOR_CPP_03(scoped_ptr, RValue)
98 98
99 public: 99 public:
100 100
101 // The element type 101 // The element type
102 typedef C element_type; 102 typedef C element_type;
103 103
104 // Constructor. Defaults to initializing with NULL. 104 // Constructor. Defaults to initializing with NULL.
105 // There is no way to create an uninitialized scoped_ptr. 105 // There is no way to create an uninitialized scoped_ptr.
106 // The input parameter must be allocated with new. 106 // The input parameter must be allocated with new.
107 explicit scoped_ptr(C* p = NULL) : ptr_(p) { } 107 explicit scoped_ptr(C* p = NULL) : ptr_(p) { }
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 // with new [] and the destructor deletes objects with delete []. 213 // with new [] and the destructor deletes objects with delete [].
214 // 214 //
215 // As with scoped_ptr<C>, a scoped_array<C> either points to an object 215 // As with scoped_ptr<C>, a scoped_array<C> either points to an object
216 // or is NULL. A scoped_array<C> owns the object that it points to. 216 // or is NULL. A scoped_array<C> owns the object that it points to.
217 // scoped_array<T> is thread-compatible, and once you index into it, 217 // scoped_array<T> is thread-compatible, and once you index into it,
218 // the returned objects have only the thread safety guarantees of T. 218 // the returned objects have only the thread safety guarantees of T.
219 // 219 //
220 // Size: sizeof(scoped_array<C>) == sizeof(C*) 220 // Size: sizeof(scoped_array<C>) == sizeof(C*)
221 template <class C> 221 template <class C>
222 class scoped_array { 222 class scoped_array {
223 MOVE_ONLY_TYPE_FOR_CPP_03(scoped_array, RValue); 223 MOVE_ONLY_TYPE_FOR_CPP_03(scoped_array, RValue)
224 224
225 public: 225 public:
226 226
227 // The element type 227 // The element type
228 typedef C element_type; 228 typedef C element_type;
229 229
230 // Constructor. Defaults to initializing with NULL. 230 // Constructor. Defaults to initializing with NULL.
231 // There is no way to create an uninitialized scoped_array. 231 // There is no way to create an uninitialized scoped_array.
232 // The input parameter must be allocated with new []. 232 // The input parameter must be allocated with new [].
233 explicit scoped_array(C* p = NULL) : array_(p) { } 233 explicit scoped_array(C* p = NULL) : array_(p) { }
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 inline void operator()(void* x) const { 328 inline void operator()(void* x) const {
329 free(x); 329 free(x);
330 } 330 }
331 }; 331 };
332 332
333 // scoped_ptr_malloc<> is similar to scoped_ptr<>, but it accepts a 333 // scoped_ptr_malloc<> is similar to scoped_ptr<>, but it accepts a
334 // second template argument, the functor used to free the object. 334 // second template argument, the functor used to free the object.
335 335
336 template<class C, class FreeProc = ScopedPtrMallocFree> 336 template<class C, class FreeProc = ScopedPtrMallocFree>
337 class scoped_ptr_malloc { 337 class scoped_ptr_malloc {
338 MOVE_ONLY_TYPE_FOR_CPP_03(scoped_ptr_malloc, RValue); 338 MOVE_ONLY_TYPE_FOR_CPP_03(scoped_ptr_malloc, RValue)
339 339
340 public: 340 public:
341 341
342 // The element type 342 // The element type
343 typedef C element_type; 343 typedef C element_type;
344 344
345 // Constructor. Defaults to initializing with NULL. 345 // Constructor. Defaults to initializing with NULL.
346 // There is no way to create an uninitialized scoped_ptr. 346 // There is no way to create an uninitialized scoped_ptr.
347 // The input parameter must be allocated with an allocator that matches the 347 // The input parameter must be allocated with an allocator that matches the
348 // Free functor. For the default Free functor, this is malloc, calloc, or 348 // Free functor. For the default Free functor, this is malloc, calloc, or
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 bool operator==(C* p, const scoped_ptr_malloc<C, FP>& b) { 441 bool operator==(C* p, const scoped_ptr_malloc<C, FP>& b) {
442 return p == b.get(); 442 return p == b.get();
443 } 443 }
444 444
445 template<class C, class FP> inline 445 template<class C, class FP> inline
446 bool operator!=(C* p, const scoped_ptr_malloc<C, FP>& b) { 446 bool operator!=(C* p, const scoped_ptr_malloc<C, FP>& b) {
447 return p != b.get(); 447 return p != b.get();
448 } 448 }
449 449
450 #endif // BASE_MEMORY_SCOPED_PTR_H_ 450 #endif // BASE_MEMORY_SCOPED_PTR_H_
OLDNEW
« no previous file with comments | « no previous file | base/memory/scoped_vector.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698