Move some files from base to base/memory.
raw_scoped_refptr_mismatch_checker.h
ref_counted.cc
ref_counted.h
ref_counted_memory.cc
ref_counted_memory.h
ref_counted_unittest.cc
scoped_callback_factory.h
scoped_comptr_win.h
scoped_handle.h
scoped_native_library.cc
scoped_native_library.h
scoped_native_library_unittest.cc
scoped_nsobject.h
scoped_open_process.h
scoped_ptr.h
scoped_ptr_unittest.cc
scoped_temp_dir.cc
scoped_temp_dir.h
scoped_temp_dir_unittest.cc
scoped_vector.h
singleton.h
singleton_objc.h
singleton_unittest.cc
linked_ptr.h
linked_ptr_unittest.cc
weak_ptr.cc
weak_ptr.h
weak_ptr_unittest.cc
BUG=None
TEST=Compile
Review URL: http://codereview.chromium.org/6714032
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79524 0039d316-1c4b-4281-b951-d872f2087c98
CrOS-Libchrome-Original-Commit: 3b63f8f451afcf414a59c529f627c620e4d449d9
diff --git a/base/atomic_ref_count.h b/base/atomic_ref_count.h
index dff4b1f..985c42c 100644
--- a/base/atomic_ref_count.h
+++ b/base/atomic_ref_count.h
@@ -1,9 +1,9 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This is a low level implementation of atomic semantics for reference
-// counting. Please use base/ref_counted.h directly instead.
+// counting. Please use base/memory/ref_counted.h directly instead.
//
// The implementation includes annotations to avoid some false positives
// when using data race detection tools.
diff --git a/base/base.gyp b/base/base.gyp
index fcf0b88..1315c96 100644
--- a/base/base.gyp
+++ b/base/base.gyp
@@ -99,9 +99,15 @@
'json/string_escape_unittest.cc',
'lazy_instance_unittest.cc',
'linked_list_unittest.cc',
- 'linked_ptr_unittest.cc',
'logging_unittest.cc',
'mac/mac_util_unittest.mm',
+ 'memory/linked_ptr_unittest.cc',
+ 'memory/ref_counted_unittest.cc',
+ 'memory/scoped_native_library_unittest.cc',
+ 'memory/scoped_ptr_unittest.cc',
+ 'memory/scoped_temp_dir_unittest.cc',
+ 'memory/singleton_unittest.cc',
+ 'memory/weak_ptr_unittest.cc',
'message_loop_proxy_impl_unittest.cc',
'message_loop_unittest.cc',
'message_pump_glib_unittest.cc',
@@ -117,14 +123,9 @@
'process_util_unittest_mac.h',
'process_util_unittest_mac.mm',
'rand_util_unittest.cc',
- 'ref_counted_unittest.cc',
- 'scoped_native_library_unittest.cc',
- 'scoped_ptr_unittest.cc',
- 'scoped_temp_dir_unittest.cc',
'sha1_unittest.cc',
'sha2_unittest.cc',
'shared_memory_unittest.cc',
- 'singleton_unittest.cc',
'stack_container_unittest.cc',
'string16_unittest.cc',
'string_number_conversions_unittest.cc',
@@ -167,7 +168,6 @@
'values_unittest.cc',
'version_unittest.cc',
'vlog_unittest.cc',
- 'weak_ptr_unittest.cc',
'win/event_trace_consumer_unittest.cc',
'win/event_trace_controller_unittest.cc',
'win/event_trace_provider_unittest.cc',
diff --git a/base/base.gypi b/base/base.gypi
index f48646d..7777cba 100644
--- a/base/base.gypi
+++ b/base/base.gypi
@@ -107,7 +107,6 @@
'lazy_instance.cc',
'lazy_instance.h',
'linked_list.h',
- 'linked_ptr.h',
'logging.cc',
'logging.h',
'logging_win.cc',
@@ -124,8 +123,27 @@
'mac/scoped_nsautorelease_pool.mm',
'mach_ipc_mac.h',
'mach_ipc_mac.mm',
- 'memory_debug.cc',
- 'memory_debug.h',
+ 'memory/linked_ptr.h',
+ 'memory/memory_debug.cc',
+ 'memory/memory_debug.h',
+ 'memory/raw_scoped_refptr_mismatch_checker.h',
+ 'memory/ref_counted.cc',
+ 'memory/ref_counted.h',
+ 'memory/ref_counted_memory.cc',
+ 'memory/ref_counted_memory.h',
+ 'memory/scoped_callback_factory.h',
+ 'memory/scoped_handle.h',
+ 'memory/scoped_native_library.cc',
+ 'memory/scoped_native_library.h',
+ 'memory/scoped_nsobject.h',
+ 'memory/scoped_open_process.h',
+ 'memory/scoped_ptr.h',
+ 'memory/scoped_temp_dir.cc',
+ 'memory/scoped_temp_dir.h',
+ 'memory/scoped_vector.h',
+ 'memory/singleton.h',
+ 'memory/weak_ptr.cc',
+ 'memory/weak_ptr.h',
'message_loop.cc',
'message_loop.h',
'message_loop_proxy.cc',
@@ -177,32 +195,18 @@
'rand_util.h',
'rand_util_posix.cc',
'rand_util_win.cc',
- 'raw_scoped_refptr_mismatch_checker.h',
- 'ref_counted.cc',
'ref_counted.h',
- 'ref_counted_memory.cc',
- 'ref_counted_memory.h',
'resource_util.cc',
'resource_util.h',
'safe_strerror_posix.cc',
'safe_strerror_posix.h',
- 'scoped_callback_factory.h',
- 'scoped_handle.h',
- 'scoped_native_library.cc',
- 'scoped_native_library.h',
- 'scoped_nsobject.h',
- 'scoped_open_process.h',
'scoped_ptr.h',
- 'scoped_temp_dir.cc',
- 'scoped_temp_dir.h',
- 'scoped_vector.h',
'sha1.h',
'sha1_portable.cc',
'sha1_win.cc',
'shared_memory.h',
'shared_memory_posix.cc',
'shared_memory_win.cc',
- 'singleton.h',
'spin_wait.h',
'stack_container.h',
'stl_util-inl.h',
@@ -306,8 +310,6 @@
'version.h',
'vlog.cc',
'vlog.h',
- 'weak_ptr.cc',
- 'weak_ptr.h',
'win/i18n.cc',
'win/i18n.h',
'win/object_watcher.cc',
diff --git a/base/base_paths_linux.cc b/base/base_paths_linux.cc
index 8b1a0b8..c32bc19 100644
--- a/base/base_paths_linux.cc
+++ b/base/base_paths_linux.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -14,8 +14,8 @@
#include "base/file_path.h"
#include "base/file_util.h"
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/path_service.h"
-#include "base/scoped_ptr.h"
#include "base/sys_string_conversions.h"
#include "base/nix/xdg_util.h"
diff --git a/base/callback_internal.h b/base/callback_internal.h
index 5ff55a0..c6c70cf 100644
--- a/base/callback_internal.h
+++ b/base/callback_internal.h
@@ -10,7 +10,7 @@
#pragma once
#include "base/base_api.h"
-#include "base/ref_counted.h"
+#include "base/memory/ref_counted.h"
namespace base {
namespace internal {
diff --git a/base/callback_old.h b/base/callback_old.h
index ab3927d..7719e66 100644
--- a/base/callback_old.h
+++ b/base/callback_old.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -6,8 +6,8 @@
#define BASE_CALLBACK_OLD_H_
#pragma once
+#include "base/memory/raw_scoped_refptr_mismatch_checker.h"
#include "base/tuple.h"
-#include "base/raw_scoped_refptr_mismatch_checker.h"
// Callback --------------------------------------------------------------------
//
diff --git a/base/callback_unittest.cc b/base/callback_unittest.cc
index f327412..da2f150 100644
--- a/base/callback_unittest.cc
+++ b/base/callback_unittest.cc
@@ -1,10 +1,10 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/callback.h"
#include "base/callback_internal.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/command_line.cc b/base/command_line.cc
index fcb2294..c5fd620 100644
--- a/base/command_line.cc
+++ b/base/command_line.cc
@@ -9,7 +9,7 @@
#include "base/file_path.h"
#include "base/file_util.h"
#include "base/logging.h"
-#include "base/singleton.h"
+#include "base/memory/singleton.h"
#include "base/string_split.h"
#include "base/string_util.h"
#include "base/sys_string_conversions.h"
diff --git a/base/crypto/capi_util.cc b/base/crypto/capi_util.cc
index ef57a3c..1828afd 100644
--- a/base/crypto/capi_util.cc
+++ b/base/crypto/capi_util.cc
@@ -1,11 +1,11 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/crypto/capi_util.h"
#include "base/basictypes.h"
-#include "base/singleton.h"
+#include "base/memory/singleton.h"
#include "base/synchronization/lock.h"
namespace {
diff --git a/base/crypto/cssm_init.cc b/base/crypto/cssm_init.cc
index 3071716..ccd6993 100644
--- a/base/crypto/cssm_init.cc
+++ b/base/crypto/cssm_init.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -8,7 +8,7 @@
#include "base/logging.h"
#include "base/mac/scoped_cftyperef.h"
-#include "base/singleton.h"
+#include "base/memory/singleton.h"
#include "base/sys_string_conversions.h"
// When writing crypto code for Mac OS X, you may find the following
diff --git a/base/crypto/encryptor_unittest.cc b/base/crypto/encryptor_unittest.cc
index e8d055b..5060b2a 100644
--- a/base/crypto/encryptor_unittest.cc
+++ b/base/crypto/encryptor_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -7,7 +7,7 @@
#include <string>
#include "base/crypto/symmetric_key.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/string_number_conversions.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/crypto/rsa_private_key.cc b/base/crypto/rsa_private_key.cc
index 024f741..c4464f1 100644
--- a/base/crypto/rsa_private_key.cc
+++ b/base/crypto/rsa_private_key.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -8,7 +8,7 @@
#include <list>
#include "base/logging.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/string_util.h"
// This file manually encodes and decodes RSA private keys using PrivateKeyInfo
diff --git a/base/crypto/rsa_private_key_nss.cc b/base/crypto/rsa_private_key_nss.cc
index 202aa1d..e952c89 100644
--- a/base/crypto/rsa_private_key_nss.cc
+++ b/base/crypto/rsa_private_key_nss.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -12,9 +12,9 @@
#include "base/debug/leak_annotations.h"
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/nss_util.h"
#include "base/nss_util_internal.h"
-#include "base/scoped_ptr.h"
#include "base/string_util.h"
// TODO(rafaelw): Consider refactoring common functions and definitions from
diff --git a/base/crypto/rsa_private_key_nss_unittest.cc b/base/crypto/rsa_private_key_nss_unittest.cc
index 7dbe628..f132d37 100644
--- a/base/crypto/rsa_private_key_nss_unittest.cc
+++ b/base/crypto/rsa_private_key_nss_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -7,8 +7,8 @@
#include <keyhi.h>
#include <pk11pub.h>
+#include "base/memory/scoped_ptr.h"
#include "base/nss_util.h"
-#include "base/scoped_ptr.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace base {
diff --git a/base/crypto/rsa_private_key_openssl.cc b/base/crypto/rsa_private_key_openssl.cc
index 891ea52..3dc6223 100644
--- a/base/crypto/rsa_private_key_openssl.cc
+++ b/base/crypto/rsa_private_key_openssl.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -9,8 +9,8 @@
#include <openssl/rsa.h>
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/openssl_util.h"
-#include "base/scoped_ptr.h"
#include "base/stl_util-inl.h"
namespace base {
diff --git a/base/crypto/rsa_private_key_unittest.cc b/base/crypto/rsa_private_key_unittest.cc
index 3b0d846..1d9a249 100644
--- a/base/crypto/rsa_private_key_unittest.cc
+++ b/base/crypto/rsa_private_key_unittest.cc
@@ -1,9 +1,9 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/crypto/rsa_private_key.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "testing/gtest/include/gtest/gtest.h"
// Generate random private keys with two different sizes. Reimport, then
diff --git a/base/crypto/scoped_nss_types.h b/base/crypto/scoped_nss_types.h
index 664251f..4a77f88 100644
--- a/base/crypto/scoped_nss_types.h
+++ b/base/crypto/scoped_nss_types.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -9,7 +9,7 @@
#include <nss.h>
#include <pk11pub.h>
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
namespace base {
diff --git a/base/crypto/secure_hash_unittest.cc b/base/crypto/secure_hash_unittest.cc
index 2dac928..ca46dac 100644
--- a/base/crypto/secure_hash_unittest.cc
+++ b/base/crypto/secure_hash_unittest.cc
@@ -5,7 +5,7 @@
#include "base/crypto/secure_hash.h"
#include "base/basictypes.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/sha2.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/crypto/signature_creator_nss.cc b/base/crypto/signature_creator_nss.cc
index 4cc2c10..92bf4d7 100644
--- a/base/crypto/signature_creator_nss.cc
+++ b/base/crypto/signature_creator_nss.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -9,8 +9,8 @@
#include <stdlib.h>
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/nss_util.h"
-#include "base/scoped_ptr.h"
namespace base {
diff --git a/base/crypto/signature_creator_openssl.cc b/base/crypto/signature_creator_openssl.cc
index 5bdb783..cdf351f 100644
--- a/base/crypto/signature_creator_openssl.cc
+++ b/base/crypto/signature_creator_openssl.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -7,8 +7,8 @@
#include <openssl/evp.h>
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/openssl_util.h"
-#include "base/scoped_ptr.h"
#include "base/stl_util-inl.h"
namespace base {
diff --git a/base/crypto/signature_creator_unittest.cc b/base/crypto/signature_creator_unittest.cc
index 11959cb..644ab7f 100644
--- a/base/crypto/signature_creator_unittest.cc
+++ b/base/crypto/signature_creator_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -6,7 +6,7 @@
#include "base/crypto/signature_creator.h"
#include "base/crypto/signature_verifier.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "testing/gtest/include/gtest/gtest.h"
TEST(SignatureCreatorTest, BasicTest) {
diff --git a/base/crypto/signature_verifier_openssl.cc b/base/crypto/signature_verifier_openssl.cc
index 4850efa..abfb553 100644
--- a/base/crypto/signature_verifier_openssl.cc
+++ b/base/crypto/signature_verifier_openssl.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -10,8 +10,8 @@
#include <vector>
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/openssl_util.h"
-#include "base/scoped_ptr.h"
#include "base/stl_util-inl.h"
namespace base {
diff --git a/base/crypto/symmetric_key_openssl.cc b/base/crypto/symmetric_key_openssl.cc
index 409cce4..d055b61 100644
--- a/base/crypto/symmetric_key_openssl.cc
+++ b/base/crypto/symmetric_key_openssl.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -10,8 +10,8 @@
#include <algorithm>
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/openssl_util.h"
-#include "base/scoped_ptr.h"
#include "base/string_util.h"
namespace base {
diff --git a/base/crypto/symmetric_key_unittest.cc b/base/crypto/symmetric_key_unittest.cc
index a9b0b9e..f9e9419 100644
--- a/base/crypto/symmetric_key_unittest.cc
+++ b/base/crypto/symmetric_key_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -6,7 +6,7 @@
#include <string>
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/string_number_conversions.h"
#include "base/string_util.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/debug/debugger_posix.cc b/base/debug/debugger_posix.cc
index 2eacaf9..dfc3d0a 100644
--- a/base/debug/debugger_posix.cc
+++ b/base/debug/debugger_posix.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -33,8 +33,8 @@
#include "base/basictypes.h"
#include "base/eintr_wrapper.h"
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/safe_strerror_posix.h"
-#include "base/scoped_ptr.h"
#include "base/string_piece.h"
#include "base/stringprintf.h"
diff --git a/base/debug/leak_tracker_unittest.cc b/base/debug/leak_tracker_unittest.cc
index 2e6a9a5..99df4c1 100644
--- a/base/debug/leak_tracker_unittest.cc
+++ b/base/debug/leak_tracker_unittest.cc
@@ -1,9 +1,9 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/debug/leak_tracker.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace base {
diff --git a/base/debug/stack_trace_posix.cc b/base/debug/stack_trace_posix.cc
index abbd642..f1f5408 100644
--- a/base/debug/stack_trace_posix.cc
+++ b/base/debug/stack_trace_posix.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -30,8 +30,8 @@
#include "base/basictypes.h"
#include "base/eintr_wrapper.h"
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/safe_strerror_posix.h"
-#include "base/scoped_ptr.h"
#include "base/string_piece.h"
#include "base/stringprintf.h"
diff --git a/base/debug/trace_event.h b/base/debug/trace_event.h
index 3eb1f49..c3405fe 100644
--- a/base/debug/trace_event.h
+++ b/base/debug/trace_event.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -31,8 +31,8 @@
#include <string>
-#include "base/scoped_ptr.h"
-#include "base/singleton.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/memory/singleton.h"
#include "base/synchronization/lock.h"
#include "base/time.h"
#include "base/timer.h"
diff --git a/base/environment.cc b/base/environment.cc
index 9ccc078..0bfc68e 100644
--- a/base/environment.cc
+++ b/base/environment.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -13,7 +13,7 @@
#include "base/string_util.h"
#if defined(OS_WIN)
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/utf_string_conversions.h"
#endif
diff --git a/base/environment_unittest.cc b/base/environment_unittest.cc
index d1ce503..b6654c9 100644
--- a/base/environment_unittest.cc
+++ b/base/environment_unittest.cc
@@ -1,9 +1,9 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/environment.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
diff --git a/base/file_util.h b/base/file_util.h
index 77ccf2b..6fe9a3d 100644
--- a/base/file_util.h
+++ b/base/file_util.h
@@ -29,8 +29,8 @@
#include "base/base_api.h"
#include "base/basictypes.h"
#include "base/file_path.h"
+#include "base/memory/scoped_ptr.h"
#include "base/platform_file.h"
-#include "base/scoped_ptr.h"
#include "base/string16.h"
#if defined(OS_POSIX)
diff --git a/base/file_util_posix.cc b/base/file_util_posix.cc
index 8df0d27..5e1214b 100644
--- a/base/file_util_posix.cc
+++ b/base/file_util_posix.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -34,8 +34,8 @@
#include "base/eintr_wrapper.h"
#include "base/file_path.h"
#include "base/logging.h"
-#include "base/scoped_ptr.h"
-#include "base/singleton.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/memory/singleton.h"
#include "base/string_util.h"
#include "base/sys_string_conversions.h"
#include "base/threading/thread_restrictions.h"
diff --git a/base/file_util_proxy.h b/base/file_util_proxy.h
index f2368cc..f975dac 100644
--- a/base/file_util_proxy.h
+++ b/base/file_util_proxy.h
@@ -10,8 +10,8 @@
#include "base/callback.h"
#include "base/file_path.h"
#include "base/file_util.h"
+#include "base/memory/ref_counted.h"
#include "base/platform_file.h"
-#include "base/ref_counted.h"
#include "base/tracked_objects.h"
namespace base {
diff --git a/base/file_util_unittest.cc b/base/file_util_unittest.cc
index 85b650a..733f9f1 100644
--- a/base/file_util_unittest.cc
+++ b/base/file_util_unittest.cc
@@ -18,8 +18,8 @@
#include "base/base_paths.h"
#include "base/file_path.h"
#include "base/file_util.h"
+#include "base/memory/scoped_temp_dir.h"
#include "base/path_service.h"
-#include "base/scoped_temp_dir.h"
#include "base/threading/platform_thread.h"
#include "base/time.h"
#include "base/utf_string_conversions.h"
diff --git a/base/file_version_info_unittest.cc b/base/file_version_info_unittest.cc
index 2b535c7..4184e04 100644
--- a/base/file_version_info_unittest.cc
+++ b/base/file_version_info_unittest.cc
@@ -1,10 +1,10 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/file_util.h"
+#include "base/memory/scoped_ptr.h"
#include "base/path_service.h"
-#include "base/scoped_ptr.h"
#include "base/file_version_info.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/global_descriptors_posix.h b/base/global_descriptors_posix.h
index 060bf0a..d635cff 100644
--- a/base/global_descriptors_posix.h
+++ b/base/global_descriptors_posix.h
@@ -13,7 +13,7 @@
#include <stdint.h>
-#include "base/singleton.h"
+#include "base/memory/singleton.h"
namespace base {
diff --git a/base/hmac.h b/base/hmac.h
index 3b1a9fd..2593307 100644
--- a/base/hmac.h
+++ b/base/hmac.h
@@ -13,7 +13,7 @@
#include "base/base_api.h"
#include "base/basictypes.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
namespace base {
diff --git a/base/hmac_nss.cc b/base/hmac_nss.cc
index af0b3eb..658616b 100644
--- a/base/hmac_nss.cc
+++ b/base/hmac_nss.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -9,8 +9,8 @@
#include "base/crypto/scoped_nss_types.h"
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/nss_util.h"
-#include "base/scoped_ptr.h"
namespace base {
diff --git a/base/hmac_openssl.cc b/base/hmac_openssl.cc
index f45d3a7..64ce177 100644
--- a/base/hmac_openssl.cc
+++ b/base/hmac_openssl.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -10,8 +10,8 @@
#include <vector>
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/openssl_util.h"
-#include "base/scoped_ptr.h"
#include "base/stl_util-inl.h"
namespace base {
diff --git a/base/i18n/file_util_icu.cc b/base/i18n/file_util_icu.cc
index ba69da0..9d12097 100644
--- a/base/i18n/file_util_icu.cc
+++ b/base/i18n/file_util_icu.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -8,8 +8,8 @@
#include "base/file_path.h"
#include "base/logging.h"
-#include "base/scoped_ptr.h"
-#include "base/singleton.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/memory/singleton.h"
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
#include "base/sys_string_conversions.h"
diff --git a/base/i18n/number_formatting.cc b/base/i18n/number_formatting.cc
index df6af14..6b28de5 100644
--- a/base/i18n/number_formatting.cc
+++ b/base/i18n/number_formatting.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -7,7 +7,7 @@
#include "base/format_macros.h"
#include "base/logging.h"
#include "base/lazy_instance.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
#include "unicode/numfmt.h"
diff --git a/base/i18n/time_formatting.cc b/base/i18n/time_formatting.cc
index 3fa984a..823f7a6 100644
--- a/base/i18n/time_formatting.cc
+++ b/base/i18n/time_formatting.cc
@@ -1,11 +1,11 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/i18n/time_formatting.h"
#include "base/logging.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/utf_string_conversions.h"
#include "base/time.h"
#include "unicode/datefmt.h"
diff --git a/base/json/json_reader.cc b/base/json/json_reader.cc
index c8fe78d..82bc7d4 100644
--- a/base/json/json_reader.cc
+++ b/base/json/json_reader.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -6,7 +6,7 @@
#include "base/float_util.h"
#include "base/logging.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/string_number_conversions.h"
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
diff --git a/base/json/json_reader_unittest.cc b/base/json/json_reader_unittest.cc
index db0ab63..a7aeaf0 100644
--- a/base/json/json_reader_unittest.cc
+++ b/base/json/json_reader_unittest.cc
@@ -1,10 +1,10 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "testing/gtest/include/gtest/gtest.h"
#include "base/json/json_reader.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/string_piece.h"
#include "base/utf_string_conversions.h"
#include "base/values.h"
diff --git a/base/linux_util.cc b/base/linux_util.cc
index 4e7cc5c..725c602 100644
--- a/base/linux_util.cc
+++ b/base/linux_util.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -17,10 +17,10 @@
#include "base/command_line.h"
#include "base/file_util.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/memory/singleton.h"
#include "base/path_service.h"
#include "base/process_util.h"
-#include "base/singleton.h"
-#include "base/scoped_ptr.h"
#include "base/string_util.h"
#include "base/synchronization/lock.h"
diff --git a/base/linked_ptr.h b/base/memory/linked_ptr.h
similarity index 96%
rename from base/linked_ptr.h
rename to base/memory/linked_ptr.h
index 162798d..41931d8 100644
--- a/base/linked_ptr.h
+++ b/base/memory/linked_ptr.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
@@ -34,8 +34,8 @@
// - is thread safe for copying and deletion
// - supports weak_ptrs
-#ifndef BASE_LINKED_PTR_H_
-#define BASE_LINKED_PTR_H_
+#ifndef BASE_MEMORY_LINKED_PTR_H_
+#define BASE_MEMORY_LINKED_PTR_H_
#pragma once
#include "base/logging.h" // for CHECK macros
@@ -179,4 +179,4 @@
return linked_ptr<T>(ptr);
}
-#endif // BASE_LINKED_PTR_H_
+#endif // BASE_MEMORY_LINKED_PTR_H_
diff --git a/base/linked_ptr_unittest.cc b/base/memory/linked_ptr_unittest.cc
similarity index 95%
rename from base/linked_ptr_unittest.cc
rename to base/memory/linked_ptr_unittest.cc
index e65b687..ae10fc2 100644
--- a/base/linked_ptr_unittest.cc
+++ b/base/memory/linked_ptr_unittest.cc
@@ -1,10 +1,10 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <string>
-#include "base/linked_ptr.h"
+#include "base/memory/linked_ptr.h"
#include "base/stringprintf.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/memory_debug.cc b/base/memory/memory_debug.cc
similarity index 90%
rename from base/memory_debug.cc
rename to base/memory/memory_debug.cc
index 7d048e6..f020b94 100644
--- a/base/memory_debug.cc
+++ b/base/memory/memory_debug.cc
@@ -1,8 +1,8 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/memory_debug.h"
+#include "base/memory/memory_debug.h"
#ifdef PURIFY
// this #define is used to prevent people from directly using pure.h
diff --git a/base/memory_debug.h b/base/memory/memory_debug.h
similarity index 88%
rename from base/memory_debug.h
rename to base/memory/memory_debug.h
index 6d8c7f9..9cc6c61 100644
--- a/base/memory_debug.h
+++ b/base/memory/memory_debug.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -6,8 +6,8 @@
// All methods are effectively no-ops unless this program is being run through
// a supported memory tool (currently, only Purify)
-#ifndef BASE_MEMORY_DEBUG_H_
-#define BASE_MEMORY_DEBUG_H_
+#ifndef BASE_MEMORY_MEMORY_DEBUG_H_
+#define BASE_MEMORY_MEMORY_DEBUG_H_
#pragma once
#include "base/basictypes.h"
@@ -44,4 +44,4 @@
} // namespace base
-#endif // BASE_MEMORY_DEBUG_H_
+#endif // BASE_MEMORY_MEMORY_DEBUG_H_
diff --git a/base/raw_scoped_refptr_mismatch_checker.h b/base/memory/raw_scoped_refptr_mismatch_checker.h
similarity index 94%
rename from base/raw_scoped_refptr_mismatch_checker.h
rename to base/memory/raw_scoped_refptr_mismatch_checker.h
index b79cfb5..a4a50c3 100644
--- a/base/raw_scoped_refptr_mismatch_checker.h
+++ b/base/memory/raw_scoped_refptr_mismatch_checker.h
@@ -1,12 +1,12 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef BASE_RAW_SCOPED_REFPTR_MISMATCH_CHECKER_H_
-#define BASE_RAW_SCOPED_REFPTR_MISMATCH_CHECKER_H_
+#ifndef BASE_MEMORY_RAW_SCOPED_REFPTR_MISMATCH_CHECKER_H_
+#define BASE_MEMORY_RAW_SCOPED_REFPTR_MISMATCH_CHECKER_H_
#pragma once
-#include "base/ref_counted.h"
+#include "base/memory/ref_counted.h"
#include "base/template_util.h"
#include "base/tuple.h"
#include "build/build_config.h"
@@ -127,4 +127,4 @@
} // namespace base
-#endif // BASE_RAW_SCOPED_REFPTR_MISMATCH_CHECKER_H_
+#endif // BASE_MEMORY_RAW_SCOPED_REFPTR_MISMATCH_CHECKER_H_
diff --git a/base/ref_counted.cc b/base/memory/ref_counted.cc
similarity index 94%
rename from base/ref_counted.cc
rename to base/memory/ref_counted.cc
index 2d459ae..31ad509 100644
--- a/base/ref_counted.cc
+++ b/base/memory/ref_counted.cc
@@ -1,8 +1,8 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/ref_counted.h"
+#include "base/memory/ref_counted.h"
#include "base/logging.h"
#include "base/threading/thread_collision_warner.h"
diff --git a/base/memory/ref_counted.h b/base/memory/ref_counted.h
new file mode 100644
index 0000000..1207ed4
--- /dev/null
+++ b/base/memory/ref_counted.h
@@ -0,0 +1,299 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef BASE_MEMORY_REF_COUNTED_H_
+#define BASE_MEMORY_REF_COUNTED_H_
+#pragma once
+
+#include "base/atomic_ref_count.h"
+#include "base/base_api.h"
+#include "base/threading/thread_collision_warner.h"
+
+namespace base {
+
+namespace subtle {
+
+class BASE_API RefCountedBase {
+ public:
+ static bool ImplementsThreadSafeReferenceCounting() { return false; }
+
+ bool HasOneRef() const { return ref_count_ == 1; }
+
+ protected:
+ RefCountedBase();
+ ~RefCountedBase();
+
+ void AddRef() const;
+
+ // Returns true if the object should self-delete.
+ bool Release() const;
+
+ private:
+ mutable int ref_count_;
+#ifndef NDEBUG
+ mutable bool in_dtor_;
+#endif
+
+ DFAKE_MUTEX(add_release_);
+
+ DISALLOW_COPY_AND_ASSIGN(RefCountedBase);
+};
+
+class BASE_API RefCountedThreadSafeBase {
+ public:
+ static bool ImplementsThreadSafeReferenceCounting() { return true; }
+
+ bool HasOneRef() const;
+
+ protected:
+ RefCountedThreadSafeBase();
+ ~RefCountedThreadSafeBase();
+
+ void AddRef() const;
+
+ // Returns true if the object should self-delete.
+ bool Release() const;
+
+ private:
+ mutable AtomicRefCount ref_count_;
+#ifndef NDEBUG
+ mutable bool in_dtor_;
+#endif
+
+ DISALLOW_COPY_AND_ASSIGN(RefCountedThreadSafeBase);
+};
+
+} // namespace subtle
+
+//
+// A base class for reference counted classes. Otherwise, known as a cheap
+// knock-off of WebKit's RefCounted<T> class. To use this guy just extend your
+// class from it like so:
+//
+// class MyFoo : public base::RefCounted<MyFoo> {
+// ...
+// private:
+// friend class base::RefCounted<MyFoo>;
+// ~MyFoo();
+// };
+//
+// You should always make your destructor private, to avoid any code deleting
+// the object accidently while there are references to it.
+template <class T>
+class RefCounted : public subtle::RefCountedBase {
+ public:
+ RefCounted() { }
+ ~RefCounted() { }
+
+ void AddRef() const {
+ subtle::RefCountedBase::AddRef();
+ }
+
+ void Release() const {
+ if (subtle::RefCountedBase::Release()) {
+ delete static_cast<const T*>(this);
+ }
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(RefCounted<T>);
+};
+
+// Forward declaration.
+template <class T, typename Traits> class RefCountedThreadSafe;
+
+// Default traits for RefCountedThreadSafe<T>. Deletes the object when its ref
+// count reaches 0. Overload to delete it on a different thread etc.
+template<typename T>
+struct DefaultRefCountedThreadSafeTraits {
+ static void Destruct(const T* x) {
+ // Delete through RefCountedThreadSafe to make child classes only need to be
+ // friend with RefCountedThreadSafe instead of this struct, which is an
+ // implementation detail.
+ RefCountedThreadSafe<T,
+ DefaultRefCountedThreadSafeTraits>::DeleteInternal(x);
+ }
+};
+
+//
+// A thread-safe variant of RefCounted<T>
+//
+// class MyFoo : public base::RefCountedThreadSafe<MyFoo> {
+// ...
+// };
+//
+// If you're using the default trait, then you should add compile time
+// asserts that no one else is deleting your object. i.e.
+// private:
+// friend class base::RefCountedThreadSafe<MyFoo>;
+// ~MyFoo();
+template <class T, typename Traits = DefaultRefCountedThreadSafeTraits<T> >
+class RefCountedThreadSafe : public subtle::RefCountedThreadSafeBase {
+ public:
+ RefCountedThreadSafe() { }
+ ~RefCountedThreadSafe() { }
+
+ void AddRef() const {
+ subtle::RefCountedThreadSafeBase::AddRef();
+ }
+
+ void Release() const {
+ if (subtle::RefCountedThreadSafeBase::Release()) {
+ Traits::Destruct(static_cast<const T*>(this));
+ }
+ }
+
+ private:
+ friend struct DefaultRefCountedThreadSafeTraits<T>;
+ static void DeleteInternal(const T* x) { delete x; }
+
+ DISALLOW_COPY_AND_ASSIGN(RefCountedThreadSafe);
+};
+
+//
+// A wrapper for some piece of data so we can place other things in
+// scoped_refptrs<>.
+//
+template<typename T>
+class RefCountedData : public base::RefCounted< base::RefCountedData<T> > {
+ public:
+ RefCountedData() : data() {}
+ RefCountedData(const T& in_value) : data(in_value) {}
+
+ T data;
+};
+
+} // namespace base
+
+//
+// A smart pointer class for reference counted objects. Use this class instead
+// of calling AddRef and Release manually on a reference counted object to
+// avoid common memory leaks caused by forgetting to Release an object
+// reference. Sample usage:
+//
+// class MyFoo : public RefCounted<MyFoo> {
+// ...
+// };
+//
+// void some_function() {
+// scoped_refptr<MyFoo> foo = new MyFoo();
+// foo->Method(param);
+// // |foo| is released when this function returns
+// }
+//
+// void some_other_function() {
+// scoped_refptr<MyFoo> foo = new MyFoo();
+// ...
+// foo = NULL; // explicitly releases |foo|
+// ...
+// if (foo)
+// foo->Method(param);
+// }
+//
+// The above examples show how scoped_refptr<T> acts like a pointer to T.
+// Given two scoped_refptr<T> classes, it is also possible to exchange
+// references between the two objects, like so:
+//
+// {
+// scoped_refptr<MyFoo> a = new MyFoo();
+// scoped_refptr<MyFoo> b;
+//
+// b.swap(a);
+// // now, |b| references the MyFoo object, and |a| references NULL.
+// }
+//
+// To make both |a| and |b| in the above example reference the same MyFoo
+// object, simply use the assignment operator:
+//
+// {
+// scoped_refptr<MyFoo> a = new MyFoo();
+// scoped_refptr<MyFoo> b;
+//
+// b = a;
+// // now, |a| and |b| each own a reference to the same MyFoo object.
+// }
+//
+template <class T>
+class scoped_refptr {
+ public:
+ scoped_refptr() : ptr_(NULL) {
+ }
+
+ scoped_refptr(T* p) : ptr_(p) {
+ if (ptr_)
+ ptr_->AddRef();
+ }
+
+ scoped_refptr(const scoped_refptr<T>& r) : ptr_(r.ptr_) {
+ if (ptr_)
+ ptr_->AddRef();
+ }
+
+ template <typename U>
+ scoped_refptr(const scoped_refptr<U>& r) : ptr_(r.get()) {
+ if (ptr_)
+ ptr_->AddRef();
+ }
+
+ ~scoped_refptr() {
+ if (ptr_)
+ ptr_->Release();
+ }
+
+ T* get() const { return ptr_; }
+ operator T*() const { return ptr_; }
+ T* operator->() const { return ptr_; }
+
+ // Release a pointer.
+ // The return value is the current pointer held by this object.
+ // If this object holds a NULL pointer, the return value is NULL.
+ // After this operation, this object will hold a NULL pointer,
+ // and will not own the object any more.
+ T* release() {
+ T* retVal = ptr_;
+ ptr_ = NULL;
+ return retVal;
+ }
+
+ scoped_refptr<T>& operator=(T* p) {
+ // AddRef first so that self assignment should work
+ if (p)
+ p->AddRef();
+ if (ptr_ )
+ ptr_ ->Release();
+ ptr_ = p;
+ return *this;
+ }
+
+ scoped_refptr<T>& operator=(const scoped_refptr<T>& r) {
+ return *this = r.ptr_;
+ }
+
+ template <typename U>
+ scoped_refptr<T>& operator=(const scoped_refptr<U>& r) {
+ return *this = r.get();
+ }
+
+ void swap(T** pp) {
+ T* p = ptr_;
+ ptr_ = *pp;
+ *pp = p;
+ }
+
+ void swap(scoped_refptr<T>& r) {
+ swap(&r.ptr_);
+ }
+
+ protected:
+ T* ptr_;
+};
+
+// Handy utility for creating a scoped_refptr<T> out of a T* explicitly without
+// having to retype all the template arguments
+template <typename T>
+scoped_refptr<T> make_scoped_refptr(T* t) {
+ return scoped_refptr<T>(t);
+}
+
+#endif // BASE_MEMORY_REF_COUNTED_H_
diff --git a/base/ref_counted_memory.cc b/base/memory/ref_counted_memory.cc
similarity index 89%
rename from base/ref_counted_memory.cc
rename to base/memory/ref_counted_memory.cc
index dc244b9..aa16031 100644
--- a/base/ref_counted_memory.cc
+++ b/base/memory/ref_counted_memory.cc
@@ -1,8 +1,8 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/ref_counted_memory.h"
+#include "base/memory/ref_counted_memory.h"
RefCountedMemory::RefCountedMemory() {
}
diff --git a/base/ref_counted_memory.h b/base/memory/ref_counted_memory.h
similarity index 93%
rename from base/ref_counted_memory.h
rename to base/memory/ref_counted_memory.h
index fe7427e..db15792 100644
--- a/base/ref_counted_memory.h
+++ b/base/memory/ref_counted_memory.h
@@ -2,13 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef BASE_REF_COUNTED_MEMORY_H_
-#define BASE_REF_COUNTED_MEMORY_H_
+#ifndef BASE_MEMORY_REF_COUNTED_MEMORY_H_
+#define BASE_MEMORY_REF_COUNTED_MEMORY_H_
#pragma once
#include <vector>
-#include "base/ref_counted.h"
+#include "base/memory/ref_counted.h"
// TODO(erg): The contents of this file should be in a namespace. This would
// require touching >100 files in chrome/ though.
@@ -79,4 +79,4 @@
DISALLOW_COPY_AND_ASSIGN(RefCountedBytes);
};
-#endif // BASE_REF_COUNTED_MEMORY_H_
+#endif // BASE_MEMORY_REF_COUNTED_MEMORY_H_
diff --git a/base/ref_counted_unittest.cc b/base/memory/ref_counted_unittest.cc
similarity index 88%
rename from base/ref_counted_unittest.cc
rename to base/memory/ref_counted_unittest.cc
index cd6f922..dcc292f 100644
--- a/base/ref_counted_unittest.cc
+++ b/base/memory/ref_counted_unittest.cc
@@ -1,9 +1,9 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/memory/ref_counted.h"
#include "testing/gtest/include/gtest/gtest.h"
-#include "base/ref_counted.h"
namespace {
diff --git a/base/scoped_callback_factory.h b/base/memory/scoped_callback_factory.h
similarity index 94%
rename from base/scoped_callback_factory.h
rename to base/memory/scoped_callback_factory.h
index a2fc1f0..a9c58a0 100644
--- a/base/scoped_callback_factory.h
+++ b/base/memory/scoped_callback_factory.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -33,11 +33,11 @@
// callback runs, it will notice that the MyClass instance is dead, and it will
// avoid calling the GotData method.
-#ifndef BASE_SCOPED_CALLBACK_FACTORY_H_
-#define BASE_SCOPED_CALLBACK_FACTORY_H_
+#ifndef BASE_MEMORY_SCOPED_CALLBACK_FACTORY_H_
+#define BASE_MEMORY_SCOPED_CALLBACK_FACTORY_H_
#include "base/callback.h"
-#include "base/weak_ptr.h"
+#include "base/memory/weak_ptr.h"
namespace base {
@@ -130,4 +130,4 @@
} // namespace base
-#endif // BASE_SCOPED_CALLBACK_FACTORY_H_
+#endif // BASE_MEMORY_SCOPED_CALLBACK_FACTORY_H_
diff --git a/base/scoped_handle.h b/base/memory/scoped_handle.h
similarity index 87%
rename from base/scoped_handle.h
rename to base/memory/scoped_handle.h
index 90cb5d5..232d83e 100644
--- a/base/scoped_handle.h
+++ b/base/memory/scoped_handle.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef BASE_SCOPED_HANDLE_H_
-#define BASE_SCOPED_HANDLE_H_
+#ifndef BASE_MEMORY_SCOPED_HANDLE_H_
+#define BASE_MEMORY_SCOPED_HANDLE_H_
#pragma once
#include <stdio.h>
@@ -48,4 +48,4 @@
DISALLOW_COPY_AND_ASSIGN(ScopedStdioHandle);
};
-#endif // BASE_SCOPED_HANDLE_H_
+#endif // BASE_MEMORY_SCOPED_HANDLE_H_
diff --git a/base/scoped_native_library.cc b/base/memory/scoped_native_library.cc
similarity index 89%
rename from base/scoped_native_library.cc
rename to base/memory/scoped_native_library.cc
index 9d34449..c9aef45 100644
--- a/base/scoped_native_library.cc
+++ b/base/memory/scoped_native_library.cc
@@ -1,8 +1,8 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/scoped_native_library.h"
+#include "base/memory/scoped_native_library.h"
namespace base {
diff --git a/base/scoped_native_library.h b/base/memory/scoped_native_library.h
similarity index 90%
rename from base/scoped_native_library.h
rename to base/memory/scoped_native_library.h
index 151bb5f..56116b9 100644
--- a/base/scoped_native_library.h
+++ b/base/memory/scoped_native_library.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef BASE_SCOPED_NATIVE_LIBRARY_H_
-#define BASE_SCOPED_NATIVE_LIBRARY_H_
+#ifndef BASE_MEMORY_SCOPED_NATIVE_LIBRARY_H_
+#define BASE_MEMORY_SCOPED_NATIVE_LIBRARY_H_
#pragma once
#include "base/base_api.h"
@@ -50,4 +50,4 @@
} // namespace base
-#endif // BASE_SCOPED_NATIVE_LIBRARY_H_
+#endif // BASE_MEMORY_SCOPED_NATIVE_LIBRARY_H_
diff --git a/base/scoped_native_library_unittest.cc b/base/memory/scoped_native_library_unittest.cc
similarity index 90%
rename from base/scoped_native_library_unittest.cc
rename to base/memory/scoped_native_library_unittest.cc
index 567239d..0cc60e2 100644
--- a/base/scoped_native_library_unittest.cc
+++ b/base/memory/scoped_native_library_unittest.cc
@@ -1,8 +1,8 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/scoped_native_library.h"
+#include "base/memory/scoped_native_library.h"
#if defined(OS_WIN)
#include "base/file_path.h"
#endif
diff --git a/base/scoped_nsobject.h b/base/memory/scoped_nsobject.h
similarity index 95%
rename from base/scoped_nsobject.h
rename to base/memory/scoped_nsobject.h
index a9783e0..235ac39 100644
--- a/base/scoped_nsobject.h
+++ b/base/memory/scoped_nsobject.h
@@ -1,9 +1,9 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef BASE_SCOPED_NSOBJECT_H_
-#define BASE_SCOPED_NSOBJECT_H_
+#ifndef BASE_MEMORY_SCOPED_NSOBJECT_H_
+#define BASE_MEMORY_SCOPED_NSOBJECT_H_
#pragma once
#import <Foundation/Foundation.h>
@@ -164,4 +164,4 @@
DISALLOW_COPY_AND_ASSIGN(scoped_nsobject);
};
-#endif // BASE_SCOPED_NSOBJECT_H_
+#endif // BASE_MEMORY_SCOPED_NSOBJECT_H_
diff --git a/base/scoped_open_process.h b/base/memory/scoped_open_process.h
similarity index 83%
rename from base/scoped_open_process.h
rename to base/memory/scoped_open_process.h
index 641f8e5..d5bdd95 100644
--- a/base/scoped_open_process.h
+++ b/base/memory/scoped_open_process.h
@@ -1,9 +1,9 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef BASE_SCOPED_OPEN_PROCESS_H_
-#define BASE_SCOPED_OPEN_PROCESS_H_
+#ifndef BASE_MEMORY_SCOPED_OPEN_PROCESS_H_
+#define BASE_MEMORY_SCOPED_OPEN_PROCESS_H_
#pragma once
#include "base/process.h"
@@ -47,4 +47,4 @@
};
} // namespace base
-#endif // BASE_SCOPED_OPEN_PROCESS_H_
+#endif // BASE_MEMORY_SCOPED_OPEN_PROCESS_H_
diff --git a/base/memory/scoped_ptr.h b/base/memory/scoped_ptr.h
new file mode 100644
index 0000000..1067d42
--- /dev/null
+++ b/base/memory/scoped_ptr.h
@@ -0,0 +1,383 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Scopers help you manage ownership of a pointer, helping you easily manage the
+// a pointer within a scope, and automatically destroying the pointer at the
+// end of a scope. There are two main classes you will use, which correspond
+// to the operators new/delete and new[]/delete[].
+//
+// Example usage (scoped_ptr):
+// {
+// scoped_ptr<Foo> foo(new Foo("wee"));
+// } // foo goes out of scope, releasing the pointer with it.
+//
+// {
+// scoped_ptr<Foo> foo; // No pointer managed.
+// foo.reset(new Foo("wee")); // Now a pointer is managed.
+// foo.reset(new Foo("wee2")); // Foo("wee") was destroyed.
+// foo.reset(new Foo("wee3")); // Foo("wee2") was destroyed.
+// foo->Method(); // Foo::Method() called.
+// foo.get()->Method(); // Foo::Method() called.
+// SomeFunc(foo.release()); // SomeFunc takes ownership, foo no longer
+// // manages a pointer.
+// foo.reset(new Foo("wee4")); // foo manages a pointer again.
+// foo.reset(); // Foo("wee4") destroyed, foo no longer
+// // manages a pointer.
+// } // foo wasn't managing a pointer, so nothing was destroyed.
+//
+// Example usage (scoped_array):
+// {
+// scoped_array<Foo> foo(new Foo[100]);
+// foo.get()->Method(); // Foo::Method on the 0th element.
+// foo[10].Method(); // Foo::Method on the 10th element.
+// }
+
+#ifndef BASE_MEMORY_SCOPED_PTR_H_
+#define BASE_MEMORY_SCOPED_PTR_H_
+#pragma once
+
+// This is an implementation designed to match the anticipated future TR2
+// implementation of the scoped_ptr class, and its closely-related brethren,
+// scoped_array, scoped_ptr_malloc.
+
+#include <assert.h>
+#include <stddef.h>
+#include <stdlib.h>
+
+#include "base/compiler_specific.h"
+
+// A scoped_ptr<T> is like a T*, except that the destructor of scoped_ptr<T>
+// automatically deletes the pointer it holds (if any).
+// That is, scoped_ptr<T> owns the T object that it points to.
+// Like a T*, a scoped_ptr<T> may hold either NULL or a pointer to a T object.
+// Also like T*, scoped_ptr<T> is thread-compatible, and once you
+// dereference it, you get the threadsafety guarantees of T.
+//
+// The size of a scoped_ptr is small:
+// sizeof(scoped_ptr<C>) == sizeof(C*)
+template <class C>
+class scoped_ptr {
+ public:
+
+ // The element type
+ typedef C element_type;
+
+ // Constructor. Defaults to initializing with NULL.
+ // There is no way to create an uninitialized scoped_ptr.
+ // The input parameter must be allocated with new.
+ explicit scoped_ptr(C* p = NULL) : ptr_(p) { }
+
+ // Destructor. If there is a C object, delete it.
+ // We don't need to test ptr_ == NULL because C++ does that for us.
+ ~scoped_ptr() {
+ enum { type_must_be_complete = sizeof(C) };
+ delete ptr_;
+ }
+
+ // Reset. Deletes the current owned object, if any.
+ // Then takes ownership of a new object, if given.
+ // this->reset(this->get()) works.
+ void reset(C* p = NULL) {
+ if (p != ptr_) {
+ enum { type_must_be_complete = sizeof(C) };
+ delete ptr_;
+ ptr_ = p;
+ }
+ }
+
+ // Accessors to get the owned object.
+ // operator* and operator-> will assert() if there is no current object.
+ C& operator*() const {
+ assert(ptr_ != NULL);
+ return *ptr_;
+ }
+ C* operator->() const {
+ assert(ptr_ != NULL);
+ return ptr_;
+ }
+ C* get() const { return ptr_; }
+
+ // Comparison operators.
+ // These return whether two scoped_ptr refer to the same object, not just to
+ // two different but equal objects.
+ bool operator==(C* p) const { return ptr_ == p; }
+ bool operator!=(C* p) const { return ptr_ != p; }
+
+ // Swap two scoped pointers.
+ void swap(scoped_ptr& p2) {
+ C* tmp = ptr_;
+ ptr_ = p2.ptr_;
+ p2.ptr_ = tmp;
+ }
+
+ // Release a pointer.
+ // The return value is the current pointer held by this object.
+ // If this object holds a NULL pointer, the return value is NULL.
+ // After this operation, this object will hold a NULL pointer,
+ // and will not own the object any more.
+ C* release() WARN_UNUSED_RESULT {
+ C* retVal = ptr_;
+ ptr_ = NULL;
+ return retVal;
+ }
+
+ private:
+ C* ptr_;
+
+ // Forbid comparison of scoped_ptr types. If C2 != C, it totally doesn't
+ // make sense, and if C2 == C, it still doesn't make sense because you should
+ // never have the same object owned by two different scoped_ptrs.
+ template <class C2> bool operator==(scoped_ptr<C2> const& p2) const;
+ template <class C2> bool operator!=(scoped_ptr<C2> const& p2) const;
+
+ // Disallow evil constructors
+ scoped_ptr(const scoped_ptr&);
+ void operator=(const scoped_ptr&);
+};
+
+// Free functions
+template <class C>
+void swap(scoped_ptr<C>& p1, scoped_ptr<C>& p2) {
+ p1.swap(p2);
+}
+
+template <class C>
+bool operator==(C* p1, const scoped_ptr<C>& p2) {
+ return p1 == p2.get();
+}
+
+template <class C>
+bool operator!=(C* p1, const scoped_ptr<C>& p2) {
+ return p1 != p2.get();
+}
+
+// scoped_array<C> is like scoped_ptr<C>, except that the caller must allocate
+// with new [] and the destructor deletes objects with delete [].
+//
+// As with scoped_ptr<C>, a scoped_array<C> either points to an object
+// or is NULL. A scoped_array<C> owns the object that it points to.
+// scoped_array<T> is thread-compatible, and once you index into it,
+// the returned objects have only the threadsafety guarantees of T.
+//
+// Size: sizeof(scoped_array<C>) == sizeof(C*)
+template <class C>
+class scoped_array {
+ public:
+
+ // The element type
+ typedef C element_type;
+
+ // Constructor. Defaults to intializing with NULL.
+ // There is no way to create an uninitialized scoped_array.
+ // The input parameter must be allocated with new [].
+ explicit scoped_array(C* p = NULL) : array_(p) { }
+
+ // Destructor. If there is a C object, delete it.
+ // We don't need to test ptr_ == NULL because C++ does that for us.
+ ~scoped_array() {
+ enum { type_must_be_complete = sizeof(C) };
+ delete[] array_;
+ }
+
+ // Reset. Deletes the current owned object, if any.
+ // Then takes ownership of a new object, if given.
+ // this->reset(this->get()) works.
+ void reset(C* p = NULL) {
+ if (p != array_) {
+ enum { type_must_be_complete = sizeof(C) };
+ delete[] array_;
+ array_ = p;
+ }
+ }
+
+ // Get one element of the current object.
+ // Will assert() if there is no current object, or index i is negative.
+ C& operator[](ptrdiff_t i) const {
+ assert(i >= 0);
+ assert(array_ != NULL);
+ return array_[i];
+ }
+
+ // Get a pointer to the zeroth element of the current object.
+ // If there is no current object, return NULL.
+ C* get() const {
+ return array_;
+ }
+
+ // Comparison operators.
+ // These return whether two scoped_array refer to the same object, not just to
+ // two different but equal objects.
+ bool operator==(C* p) const { return array_ == p; }
+ bool operator!=(C* p) const { return array_ != p; }
+
+ // Swap two scoped arrays.
+ void swap(scoped_array& p2) {
+ C* tmp = array_;
+ array_ = p2.array_;
+ p2.array_ = tmp;
+ }
+
+ // Release an array.
+ // The return value is the current pointer held by this object.
+ // If this object holds a NULL pointer, the return value is NULL.
+ // After this operation, this object will hold a NULL pointer,
+ // and will not own the object any more.
+ C* release() WARN_UNUSED_RESULT {
+ C* retVal = array_;
+ array_ = NULL;
+ return retVal;
+ }
+
+ private:
+ C* array_;
+
+ // Forbid comparison of different scoped_array types.
+ template <class C2> bool operator==(scoped_array<C2> const& p2) const;
+ template <class C2> bool operator!=(scoped_array<C2> const& p2) const;
+
+ // Disallow evil constructors
+ scoped_array(const scoped_array&);
+ void operator=(const scoped_array&);
+};
+
+// Free functions
+template <class C>
+void swap(scoped_array<C>& p1, scoped_array<C>& p2) {
+ p1.swap(p2);
+}
+
+template <class C>
+bool operator==(C* p1, const scoped_array<C>& p2) {
+ return p1 == p2.get();
+}
+
+template <class C>
+bool operator!=(C* p1, const scoped_array<C>& p2) {
+ return p1 != p2.get();
+}
+
+// This class wraps the c library function free() in a class that can be
+// passed as a template argument to scoped_ptr_malloc below.
+class ScopedPtrMallocFree {
+ public:
+ inline void operator()(void* x) const {
+ free(x);
+ }
+};
+
+// scoped_ptr_malloc<> is similar to scoped_ptr<>, but it accepts a
+// second template argument, the functor used to free the object.
+
+template<class C, class FreeProc = ScopedPtrMallocFree>
+class scoped_ptr_malloc {
+ public:
+
+ // The element type
+ typedef C element_type;
+
+ // Constructor. Defaults to initializing with NULL.
+ // There is no way to create an uninitialized scoped_ptr.
+ // The input parameter must be allocated with an allocator that matches the
+ // Free functor. For the default Free functor, this is malloc, calloc, or
+ // realloc.
+ explicit scoped_ptr_malloc(C* p = NULL): ptr_(p) {}
+
+ // Destructor. If there is a C object, call the Free functor.
+ ~scoped_ptr_malloc() {
+ free_(ptr_);
+ }
+
+ // Reset. Calls the Free functor on the current owned object, if any.
+ // Then takes ownership of a new object, if given.
+ // this->reset(this->get()) works.
+ void reset(C* p = NULL) {
+ if (ptr_ != p) {
+ free_(ptr_);
+ ptr_ = p;
+ }
+ }
+
+ // Get the current object.
+ // operator* and operator-> will cause an assert() failure if there is
+ // no current object.
+ C& operator*() const {
+ assert(ptr_ != NULL);
+ return *ptr_;
+ }
+
+ C* operator->() const {
+ assert(ptr_ != NULL);
+ return ptr_;
+ }
+
+ C* get() const {
+ return ptr_;
+ }
+
+ // Comparison operators.
+ // These return whether a scoped_ptr_malloc and a plain pointer refer
+ // to the same object, not just to two different but equal objects.
+ // For compatibility with the boost-derived implementation, these
+ // take non-const arguments.
+ bool operator==(C* p) const {
+ return ptr_ == p;
+ }
+
+ bool operator!=(C* p) const {
+ return ptr_ != p;
+ }
+
+ // Swap two scoped pointers.
+ void swap(scoped_ptr_malloc & b) {
+ C* tmp = b.ptr_;
+ b.ptr_ = ptr_;
+ ptr_ = tmp;
+ }
+
+ // Release a pointer.
+ // The return value is the current pointer held by this object.
+ // If this object holds a NULL pointer, the return value is NULL.
+ // After this operation, this object will hold a NULL pointer,
+ // and will not own the object any more.
+ C* release() WARN_UNUSED_RESULT {
+ C* tmp = ptr_;
+ ptr_ = NULL;
+ return tmp;
+ }
+
+ private:
+ C* ptr_;
+
+ // no reason to use these: each scoped_ptr_malloc should have its own object
+ template <class C2, class GP>
+ bool operator==(scoped_ptr_malloc<C2, GP> const& p) const;
+ template <class C2, class GP>
+ bool operator!=(scoped_ptr_malloc<C2, GP> const& p) const;
+
+ static FreeProc const free_;
+
+ // Disallow evil constructors
+ scoped_ptr_malloc(const scoped_ptr_malloc&);
+ void operator=(const scoped_ptr_malloc&);
+};
+
+template<class C, class FP>
+FP const scoped_ptr_malloc<C, FP>::free_ = FP();
+
+template<class C, class FP> inline
+void swap(scoped_ptr_malloc<C, FP>& a, scoped_ptr_malloc<C, FP>& b) {
+ a.swap(b);
+}
+
+template<class C, class FP> inline
+bool operator==(C* p, const scoped_ptr_malloc<C, FP>& b) {
+ return p == b.get();
+}
+
+template<class C, class FP> inline
+bool operator!=(C* p, const scoped_ptr_malloc<C, FP>& b) {
+ return p != b.get();
+}
+
+#endif // BASE_MEMORY_SCOPED_PTR_H_
diff --git a/base/scoped_ptr_unittest.cc b/base/memory/scoped_ptr_unittest.cc
similarity index 97%
rename from base/scoped_ptr_unittest.cc
rename to base/memory/scoped_ptr_unittest.cc
index 99b1bc0..7519051 100644
--- a/base/scoped_ptr_unittest.cc
+++ b/base/memory/scoped_ptr_unittest.cc
@@ -1,9 +1,9 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/basictypes.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
diff --git a/base/scoped_temp_dir.cc b/base/memory/scoped_temp_dir.cc
similarity index 94%
rename from base/scoped_temp_dir.cc
rename to base/memory/scoped_temp_dir.cc
index 000ed0a..f7db15d 100644
--- a/base/scoped_temp_dir.cc
+++ b/base/memory/scoped_temp_dir.cc
@@ -1,8 +1,8 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/scoped_temp_dir.h"
+#include "base/memory/scoped_temp_dir.h"
#include "base/file_util.h"
#include "base/logging.h"
diff --git a/base/scoped_temp_dir.h b/base/memory/scoped_temp_dir.h
similarity index 93%
rename from base/scoped_temp_dir.h
rename to base/memory/scoped_temp_dir.h
index d9f0e2f..4c0a73f 100644
--- a/base/scoped_temp_dir.h
+++ b/base/memory/scoped_temp_dir.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef BASE_SCOPED_TEMP_DIR_H_
-#define BASE_SCOPED_TEMP_DIR_H_
+#ifndef BASE_MEMORY_SCOPED_TEMP_DIR_H_
+#define BASE_MEMORY_SCOPED_TEMP_DIR_H_
#pragma once
// An object representing a temporary / scratch directory that should be cleaned
@@ -56,4 +56,4 @@
DISALLOW_COPY_AND_ASSIGN(ScopedTempDir);
};
-#endif // BASE_SCOPED_TEMP_DIR_H_
+#endif // BASE_MEMORY_SCOPED_TEMP_DIR_H_
diff --git a/base/scoped_temp_dir_unittest.cc b/base/memory/scoped_temp_dir_unittest.cc
similarity index 96%
rename from base/scoped_temp_dir_unittest.cc
rename to base/memory/scoped_temp_dir_unittest.cc
index 135c2fd..a83856f 100644
--- a/base/scoped_temp_dir_unittest.cc
+++ b/base/memory/scoped_temp_dir_unittest.cc
@@ -1,10 +1,10 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/file_util.h"
+#include "base/memory/scoped_temp_dir.h"
#include "base/platform_file.h"
-#include "base/scoped_temp_dir.h"
#include "testing/gtest/include/gtest/gtest.h"
TEST(ScopedTempDir, FullPath) {
diff --git a/base/scoped_vector.h b/base/memory/scoped_vector.h
similarity index 93%
rename from base/scoped_vector.h
rename to base/memory/scoped_vector.h
index 9d372f3..aec4375 100644
--- a/base/scoped_vector.h
+++ b/base/memory/scoped_vector.h
@@ -1,9 +1,9 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef BASE_SCOPED_VECTOR_H_
-#define BASE_SCOPED_VECTOR_H_
+#ifndef BASE_MEMORY_SCOPED_VECTOR_H_
+#define BASE_MEMORY_SCOPED_VECTOR_H_
#pragma once
#include <vector>
@@ -87,4 +87,4 @@
DISALLOW_COPY_AND_ASSIGN(ScopedVector);
};
-#endif // BASE_SCOPED_VECTOR_H_
+#endif // BASE_MEMORY_SCOPED_VECTOR_H_
diff --git a/base/singleton.h b/base/memory/singleton.h
similarity index 97%
rename from base/singleton.h
rename to base/memory/singleton.h
index 0fe5e27..a387356 100644
--- a/base/singleton.h
+++ b/base/memory/singleton.h
@@ -1,9 +1,9 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef BASE_SINGLETON_H_
-#define BASE_SINGLETON_H_
+#ifndef BASE_MEMORY_SINGLETON_H_
+#define BASE_MEMORY_SINGLETON_H_
#pragma once
#include "base/at_exit.h"
@@ -126,7 +126,7 @@
// Example usage:
//
// In your header:
-// #include "base/singleton.h"
+// #include "base/memory/singleton.h"
// class FooClass {
// public:
// static FooClass* GetInstance(); <-- See comment below on this.
@@ -268,4 +268,4 @@
base::subtle::AtomicWord Singleton<Type, Traits, DifferentiatingType>::
instance_ = 0;
-#endif // BASE_SINGLETON_H_
+#endif // BASE_MEMORY_SINGLETON_H_
diff --git a/base/singleton_objc.h b/base/memory/singleton_objc.h
similarity index 90%
rename from base/singleton_objc.h
rename to base/memory/singleton_objc.h
index e28c8a5..8531556 100644
--- a/base/singleton_objc.h
+++ b/base/memory/singleton_objc.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -27,12 +27,12 @@
// ...
// Foo* widgetSingleton = SingletonObjC<Foo, FooSingletonTraits>::get();
-#ifndef BASE_SINGLETON_OBJC_H_
-#define BASE_SINGLETON_OBJC_H_
+#ifndef BASE_MEMORY_SINGLETON_OBJC_H_
+#define BASE_MEMORY_SINGLETON_OBJC_H_
#pragma once
#import <Foundation/Foundation.h>
-#include "base/singleton.h"
+#include "base/memory/singleton.h"
// Singleton traits usable to manage traditional Objective-C objects, which
// are instantiated by sending |alloc| and |init| messages, and are deallocated
@@ -58,4 +58,4 @@
class SingletonObjC : public Singleton<Type, Traits, DifferentiatingType> {
};
-#endif // BASE_SINGLETON_OBJC_H_
+#endif // BASE_MEMORY_SINGLETON_OBJC_H_
diff --git a/base/singleton_unittest.cc b/base/memory/singleton_unittest.cc
similarity index 98%
rename from base/singleton_unittest.cc
rename to base/memory/singleton_unittest.cc
index 3d7e7e6..a605885 100644
--- a/base/singleton_unittest.cc
+++ b/base/memory/singleton_unittest.cc
@@ -1,11 +1,11 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/at_exit.h"
#include "base/file_util.h"
+#include "base/memory/singleton.h"
#include "base/path_service.h"
-#include "base/singleton.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
diff --git a/base/weak_ptr.cc b/base/memory/weak_ptr.cc
similarity index 93%
rename from base/weak_ptr.cc
rename to base/memory/weak_ptr.cc
index c9a6f48..fb09219 100644
--- a/base/weak_ptr.cc
+++ b/base/memory/weak_ptr.cc
@@ -1,8 +1,8 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/weak_ptr.h"
+#include "base/memory/weak_ptr.h"
namespace base {
namespace internal {
diff --git a/base/weak_ptr.h b/base/memory/weak_ptr.h
similarity index 97%
rename from base/weak_ptr.h
rename to base/memory/weak_ptr.h
index 8862517..edb9d93 100644
--- a/base/weak_ptr.h
+++ b/base/memory/weak_ptr.h
@@ -48,13 +48,13 @@
// WARNING: weak pointers are not threadsafe!!! You must only use a WeakPtr
// instance on thread where it was created.
-#ifndef BASE_WEAK_PTR_H_
-#define BASE_WEAK_PTR_H_
+#ifndef BASE_MEMORY_WEAK_PTR_H_
+#define BASE_MEMORY_WEAK_PTR_H_
#pragma once
#include "base/base_api.h"
#include "base/logging.h"
-#include "base/ref_counted.h"
+#include "base/memory/ref_counted.h"
#include "base/threading/non_thread_safe.h"
namespace base {
@@ -243,4 +243,4 @@
} // namespace base
-#endif // BASE_WEAK_PTR_H_
+#endif // BASE_MEMORY_WEAK_PTR_H_
diff --git a/base/weak_ptr_unittest.cc b/base/memory/weak_ptr_unittest.cc
similarity index 96%
rename from base/weak_ptr_unittest.cc
rename to base/memory/weak_ptr_unittest.cc
index bcaca9e..6c2a7e8 100644
--- a/base/weak_ptr_unittest.cc
+++ b/base/memory/weak_ptr_unittest.cc
@@ -1,12 +1,12 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/memory/scoped_ptr.h"
+#include "base/memory/weak_ptr.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "base/message_loop.h"
#include "base/threading/thread.h"
-#include "base/scoped_ptr.h"
-#include "base/weak_ptr.h"
namespace base {
namespace {
diff --git a/base/message_loop.h b/base/message_loop.h
index fea7e39..7da04d3 100644
--- a/base/message_loop.h
+++ b/base/message_loop.h
@@ -11,9 +11,9 @@
#include "base/base_api.h"
#include "base/basictypes.h"
+#include "base/memory/ref_counted.h"
#include "base/message_pump.h"
#include "base/observer_list.h"
-#include "base/ref_counted.h"
#include "base/synchronization/lock.h"
#include "base/task.h"
diff --git a/base/message_loop_proxy.h b/base/message_loop_proxy.h
index 9ab0b8a..e750f2a 100644
--- a/base/message_loop_proxy.h
+++ b/base/message_loop_proxy.h
@@ -8,7 +8,7 @@
#include "base/base_api.h"
#include "base/basictypes.h"
-#include "base/ref_counted.h"
+#include "base/memory/ref_counted.h"
#include "base/task.h"
namespace base {
diff --git a/base/message_loop_proxy_impl_unittest.cc b/base/message_loop_proxy_impl_unittest.cc
index 61c7850..558cd93 100644
--- a/base/message_loop_proxy_impl_unittest.cc
+++ b/base/message_loop_proxy_impl_unittest.cc
@@ -1,10 +1,10 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/memory/scoped_ptr.h"
#include "base/message_loop.h"
#include "base/message_loop_proxy_impl.h"
-#include "base/scoped_ptr.h"
#include "base/threading/thread.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
diff --git a/base/message_loop_unittest.cc b/base/message_loop_unittest.cc
index 2869bb8..cd681f3 100644
--- a/base/message_loop_unittest.cc
+++ b/base/message_loop_unittest.cc
@@ -6,8 +6,8 @@
#include "base/eintr_wrapper.h"
#include "base/logging.h"
+#include "base/memory/ref_counted.h"
#include "base/message_loop.h"
-#include "base/ref_counted.h"
#include "base/task.h"
#include "base/threading/platform_thread.h"
#include "base/threading/thread.h"
diff --git a/base/message_pump.h b/base/message_pump.h
index a356cf3..6a48e81 100644
--- a/base/message_pump.h
+++ b/base/message_pump.h
@@ -7,7 +7,7 @@
#pragma once
#include "base/base_api.h"
-#include "base/ref_counted.h"
+#include "base/memory/ref_counted.h"
namespace base {
diff --git a/base/message_pump_glib.h b/base/message_pump_glib.h
index 70bf108..7d7d8da 100644
--- a/base/message_pump_glib.h
+++ b/base/message_pump_glib.h
@@ -6,9 +6,9 @@
#define BASE_MESSAGE_PUMP_GLIB_H_
#pragma once
+#include "base/memory/scoped_ptr.h"
#include "base/message_pump.h"
#include "base/observer_list.h"
-#include "base/scoped_ptr.h"
#include "base/time.h"
typedef union _GdkEvent GdkEvent;
diff --git a/base/message_pump_glib_unittest.cc b/base/message_pump_glib_unittest.cc
index fc604b9..496fda6 100644
--- a/base/message_pump_glib_unittest.cc
+++ b/base/message_pump_glib_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -10,8 +10,8 @@
#include <algorithm>
#include <vector>
+#include "base/memory/ref_counted.h"
#include "base/message_loop.h"
-#include "base/ref_counted.h"
#include "base/threading/thread.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/message_pump_libevent.cc b/base/message_pump_libevent.cc
index 28b4bfe..5154233 100644
--- a/base/message_pump_libevent.cc
+++ b/base/message_pump_libevent.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -11,8 +11,8 @@
#include "base/eintr_wrapper.h"
#include "base/logging.h"
#include "base/mac/scoped_nsautorelease_pool.h"
+#include "base/memory/scoped_ptr.h"
#include "base/observer_list.h"
-#include "base/scoped_ptr.h"
#include "base/time.h"
#if defined(USE_SYSTEM_LIBEVENT)
#include <event.h>
diff --git a/base/metrics/field_trial.h b/base/metrics/field_trial.h
index 2ba3184..dcfd391 100644
--- a/base/metrics/field_trial.h
+++ b/base/metrics/field_trial.h
@@ -80,7 +80,7 @@
#include "base/base_api.h"
#include "base/gtest_prod_util.h"
-#include "base/ref_counted.h"
+#include "base/memory/ref_counted.h"
#include "base/synchronization/lock.h"
#include "base/time.h"
diff --git a/base/metrics/histogram.h b/base/metrics/histogram.h
index aab39be..be375df 100644
--- a/base/metrics/histogram.h
+++ b/base/metrics/histogram.h
@@ -38,8 +38,8 @@
#include "base/base_api.h"
#include "base/gtest_prod_util.h"
-#include "base/ref_counted.h"
#include "base/logging.h"
+#include "base/memory/ref_counted.h"
#include "base/time.h"
class Pickle;
diff --git a/base/metrics/stats_table.cc b/base/metrics/stats_table.cc
index cfc1da1..3db008e 100644
--- a/base/metrics/stats_table.cc
+++ b/base/metrics/stats_table.cc
@@ -5,8 +5,8 @@
#include "base/metrics/stats_table.h"
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/process_util.h"
-#include "base/scoped_ptr.h"
#include "base/shared_memory.h"
#include "base/string_piece.h"
#include "base/string_util.h"
diff --git a/base/mime_util_xdg.cc b/base/mime_util_xdg.cc
index 4dd7a3e..387b69a 100644
--- a/base/mime_util_xdg.cc
+++ b/base/mime_util_xdg.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -15,9 +15,9 @@
#include "base/file_util.h"
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/memory/singleton.h"
#include "base/message_loop.h"
-#include "base/scoped_ptr.h"
-#include "base/singleton.h"
#include "base/string_split.h"
#include "base/string_util.h"
#include "base/third_party/xdg_mime/xdgmime.h"
diff --git a/base/nss_util.cc b/base/nss_util.cc
index 3229149..c78c6d5 100644
--- a/base/nss_util.cc
+++ b/base/nss_util.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -25,8 +25,8 @@
#include "base/file_util.h"
#include "base/lazy_instance.h"
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/native_library.h"
-#include "base/scoped_ptr.h"
#include "base/stringprintf.h"
#include "base/threading/thread_restrictions.h"
diff --git a/base/observer_list_threadsafe.h b/base/observer_list_threadsafe.h
index 47a662e..43c6913 100644
--- a/base/observer_list_threadsafe.h
+++ b/base/observer_list_threadsafe.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -12,9 +12,9 @@
#include "base/basictypes.h"
#include "base/callback.h"
#include "base/logging.h"
+#include "base/memory/ref_counted.h"
#include "base/message_loop.h"
#include "base/observer_list.h"
-#include "base/ref_counted.h"
#include "base/task.h"
///////////////////////////////////////////////////////////////////////////////
diff --git a/base/observer_list_unittest.cc b/base/observer_list_unittest.cc
index 652d358..d313367 100644
--- a/base/observer_list_unittest.cc
+++ b/base/observer_list_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -7,8 +7,8 @@
#include <vector>
+#include "base/memory/ref_counted.h"
#include "base/message_loop.h"
-#include "base/ref_counted.h"
#include "base/threading/platform_thread.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/openssl_util.cc b/base/openssl_util.cc
index 931485a..2c20f45 100644
--- a/base/openssl_util.cc
+++ b/base/openssl_util.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -8,8 +8,8 @@
#include <openssl/ssl.h>
#include "base/logging.h"
-#include "base/scoped_vector.h"
-#include "base/singleton.h"
+#include "base/memory/scoped_vector.h"
+#include "base/memory/singleton.h"
#include "base/string_piece.h"
#include "base/synchronization/lock.h"
diff --git a/base/pickle_unittest.cc b/base/pickle_unittest.cc
index 51330c7..07be5e3 100644
--- a/base/pickle_unittest.cc
+++ b/base/pickle_unittest.cc
@@ -1,12 +1,12 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <string>
#include "base/basictypes.h"
+#include "base/memory/scoped_ptr.h"
#include "base/pickle.h"
-#include "base/scoped_ptr.h"
#include "base/string16.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/platform_file_unittest.cc b/base/platform_file_unittest.cc
index e54ab61..dac2956 100644
--- a/base/platform_file_unittest.cc
+++ b/base/platform_file_unittest.cc
@@ -1,10 +1,10 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/file_util.h"
+#include "base/memory/scoped_temp_dir.h"
#include "base/platform_file.h"
-#include "base/scoped_temp_dir.h"
#include "base/time.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/process_util_posix.cc b/base/process_util_posix.cc
index 37b4eeb..6c7a9f6 100644
--- a/base/process_util_posix.cc
+++ b/base/process_util_posix.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -23,8 +23,8 @@
#include "base/eintr_wrapper.h"
#include "base/file_util.h"
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/process_util.h"
-#include "base/scoped_ptr.h"
#include "base/stringprintf.h"
#include "base/synchronization/waitable_event.h"
#include "base/threading/platform_thread.h"
diff --git a/base/process_util_unittest.cc b/base/process_util_unittest.cc
index 31e1dec..7082408 100644
--- a/base/process_util_unittest.cc
+++ b/base/process_util_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -10,9 +10,9 @@
#include "base/eintr_wrapper.h"
#include "base/file_path.h"
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/path_service.h"
#include "base/process_util.h"
-#include "base/scoped_ptr.h"
#include "base/test/multiprocess_test.h"
#include "base/test/test_timeouts.h"
#include "base/threading/platform_thread.h"
diff --git a/base/ref_counted.h b/base/ref_counted.h
index a6ebfb7..5f23b29 100644
--- a/base/ref_counted.h
+++ b/base/ref_counted.h
@@ -6,294 +6,8 @@
#define BASE_REF_COUNTED_H_
#pragma once
-#include "base/atomic_ref_count.h"
-#include "base/base_api.h"
-#include "base/threading/thread_collision_warner.h"
-
-namespace base {
-
-namespace subtle {
-
-class BASE_API RefCountedBase {
- public:
- static bool ImplementsThreadSafeReferenceCounting() { return false; }
-
- bool HasOneRef() const { return ref_count_ == 1; }
-
- protected:
- RefCountedBase();
- ~RefCountedBase();
-
- void AddRef() const;
-
- // Returns true if the object should self-delete.
- bool Release() const;
-
- private:
- mutable int ref_count_;
-#ifndef NDEBUG
- mutable bool in_dtor_;
-#endif
-
- DFAKE_MUTEX(add_release_);
-
- DISALLOW_COPY_AND_ASSIGN(RefCountedBase);
-};
-
-class BASE_API RefCountedThreadSafeBase {
- public:
- static bool ImplementsThreadSafeReferenceCounting() { return true; }
-
- bool HasOneRef() const;
-
- protected:
- RefCountedThreadSafeBase();
- ~RefCountedThreadSafeBase();
-
- void AddRef() const;
-
- // Returns true if the object should self-delete.
- bool Release() const;
-
- private:
- mutable AtomicRefCount ref_count_;
-#ifndef NDEBUG
- mutable bool in_dtor_;
-#endif
-
- DISALLOW_COPY_AND_ASSIGN(RefCountedThreadSafeBase);
-};
-
-} // namespace subtle
-
-//
-// A base class for reference counted classes. Otherwise, known as a cheap
-// knock-off of WebKit's RefCounted<T> class. To use this guy just extend your
-// class from it like so:
-//
-// class MyFoo : public base::RefCounted<MyFoo> {
-// ...
-// private:
-// friend class base::RefCounted<MyFoo>;
-// ~MyFoo();
-// };
-//
-// You should always make your destructor private, to avoid any code deleting
-// the object accidently while there are references to it.
-template <class T>
-class RefCounted : public subtle::RefCountedBase {
- public:
- RefCounted() { }
- ~RefCounted() { }
-
- void AddRef() const {
- subtle::RefCountedBase::AddRef();
- }
-
- void Release() const {
- if (subtle::RefCountedBase::Release()) {
- delete static_cast<const T*>(this);
- }
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(RefCounted<T>);
-};
-
-// Forward declaration.
-template <class T, typename Traits> class RefCountedThreadSafe;
-
-// Default traits for RefCountedThreadSafe<T>. Deletes the object when its ref
-// count reaches 0. Overload to delete it on a different thread etc.
-template<typename T>
-struct DefaultRefCountedThreadSafeTraits {
- static void Destruct(const T* x) {
- // Delete through RefCountedThreadSafe to make child classes only need to be
- // friend with RefCountedThreadSafe instead of this struct, which is an
- // implementation detail.
- RefCountedThreadSafe<T,
- DefaultRefCountedThreadSafeTraits>::DeleteInternal(x);
- }
-};
-
-//
-// A thread-safe variant of RefCounted<T>
-//
-// class MyFoo : public base::RefCountedThreadSafe<MyFoo> {
-// ...
-// };
-//
-// If you're using the default trait, then you should add compile time
-// asserts that no one else is deleting your object. i.e.
-// private:
-// friend class base::RefCountedThreadSafe<MyFoo>;
-// ~MyFoo();
-template <class T, typename Traits = DefaultRefCountedThreadSafeTraits<T> >
-class RefCountedThreadSafe : public subtle::RefCountedThreadSafeBase {
- public:
- RefCountedThreadSafe() { }
- ~RefCountedThreadSafe() { }
-
- void AddRef() const {
- subtle::RefCountedThreadSafeBase::AddRef();
- }
-
- void Release() const {
- if (subtle::RefCountedThreadSafeBase::Release()) {
- Traits::Destruct(static_cast<const T*>(this));
- }
- }
-
- private:
- friend struct DefaultRefCountedThreadSafeTraits<T>;
- static void DeleteInternal(const T* x) { delete x; }
-
- DISALLOW_COPY_AND_ASSIGN(RefCountedThreadSafe);
-};
-
-//
-// A wrapper for some piece of data so we can place other things in
-// scoped_refptrs<>.
-//
-template<typename T>
-class RefCountedData : public base::RefCounted< base::RefCountedData<T> > {
- public:
- RefCountedData() : data() {}
- RefCountedData(const T& in_value) : data(in_value) {}
-
- T data;
-};
-
-} // namespace base
-
-//
-// A smart pointer class for reference counted objects. Use this class instead
-// of calling AddRef and Release manually on a reference counted object to
-// avoid common memory leaks caused by forgetting to Release an object
-// reference. Sample usage:
-//
-// class MyFoo : public RefCounted<MyFoo> {
-// ...
-// };
-//
-// void some_function() {
-// scoped_refptr<MyFoo> foo = new MyFoo();
-// foo->Method(param);
-// // |foo| is released when this function returns
-// }
-//
-// void some_other_function() {
-// scoped_refptr<MyFoo> foo = new MyFoo();
-// ...
-// foo = NULL; // explicitly releases |foo|
-// ...
-// if (foo)
-// foo->Method(param);
-// }
-//
-// The above examples show how scoped_refptr<T> acts like a pointer to T.
-// Given two scoped_refptr<T> classes, it is also possible to exchange
-// references between the two objects, like so:
-//
-// {
-// scoped_refptr<MyFoo> a = new MyFoo();
-// scoped_refptr<MyFoo> b;
-//
-// b.swap(a);
-// // now, |b| references the MyFoo object, and |a| references NULL.
-// }
-//
-// To make both |a| and |b| in the above example reference the same MyFoo
-// object, simply use the assignment operator:
-//
-// {
-// scoped_refptr<MyFoo> a = new MyFoo();
-// scoped_refptr<MyFoo> b;
-//
-// b = a;
-// // now, |a| and |b| each own a reference to the same MyFoo object.
-// }
-//
-template <class T>
-class scoped_refptr {
- public:
- scoped_refptr() : ptr_(NULL) {
- }
-
- scoped_refptr(T* p) : ptr_(p) {
- if (ptr_)
- ptr_->AddRef();
- }
-
- scoped_refptr(const scoped_refptr<T>& r) : ptr_(r.ptr_) {
- if (ptr_)
- ptr_->AddRef();
- }
-
- template <typename U>
- scoped_refptr(const scoped_refptr<U>& r) : ptr_(r.get()) {
- if (ptr_)
- ptr_->AddRef();
- }
-
- ~scoped_refptr() {
- if (ptr_)
- ptr_->Release();
- }
-
- T* get() const { return ptr_; }
- operator T*() const { return ptr_; }
- T* operator->() const { return ptr_; }
-
- // Release a pointer.
- // The return value is the current pointer held by this object.
- // If this object holds a NULL pointer, the return value is NULL.
- // After this operation, this object will hold a NULL pointer,
- // and will not own the object any more.
- T* release() {
- T* retVal = ptr_;
- ptr_ = NULL;
- return retVal;
- }
-
- scoped_refptr<T>& operator=(T* p) {
- // AddRef first so that self assignment should work
- if (p)
- p->AddRef();
- if (ptr_ )
- ptr_ ->Release();
- ptr_ = p;
- return *this;
- }
-
- scoped_refptr<T>& operator=(const scoped_refptr<T>& r) {
- return *this = r.ptr_;
- }
-
- template <typename U>
- scoped_refptr<T>& operator=(const scoped_refptr<U>& r) {
- return *this = r.get();
- }
-
- void swap(T** pp) {
- T* p = ptr_;
- ptr_ = *pp;
- *pp = p;
- }
-
- void swap(scoped_refptr<T>& r) {
- swap(&r.ptr_);
- }
-
- protected:
- T* ptr_;
-};
-
-// Handy utility for creating a scoped_refptr<T> out of a T* explicitly without
-// having to retype all the template arguments
-template <typename T>
-scoped_refptr<T> make_scoped_refptr(T* t) {
- return scoped_refptr<T>(t);
-}
+// FIXME: Remove this header when third_party/leveldb is fixed to not rely on
+// it.
+#include "base/memory/ref_counted.h"
#endif // BASE_REF_COUNTED_H_
diff --git a/base/scoped_ptr.h b/base/scoped_ptr.h
index 0a90150..f36da51 100644
--- a/base/scoped_ptr.h
+++ b/base/scoped_ptr.h
@@ -1,383 +1,13 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Scopers help you manage ownership of a pointer, helping you easily manage the
-// a pointer within a scope, and automatically destroying the pointer at the
-// end of a scope. There are two main classes you will use, which correspond
-// to the operators new/delete and new[]/delete[].
-//
-// Example usage (scoped_ptr):
-// {
-// scoped_ptr<Foo> foo(new Foo("wee"));
-// } // foo goes out of scope, releasing the pointer with it.
-//
-// {
-// scoped_ptr<Foo> foo; // No pointer managed.
-// foo.reset(new Foo("wee")); // Now a pointer is managed.
-// foo.reset(new Foo("wee2")); // Foo("wee") was destroyed.
-// foo.reset(new Foo("wee3")); // Foo("wee2") was destroyed.
-// foo->Method(); // Foo::Method() called.
-// foo.get()->Method(); // Foo::Method() called.
-// SomeFunc(foo.release()); // SomeFunc takes ownership, foo no longer
-// // manages a pointer.
-// foo.reset(new Foo("wee4")); // foo manages a pointer again.
-// foo.reset(); // Foo("wee4") destroyed, foo no longer
-// // manages a pointer.
-// } // foo wasn't managing a pointer, so nothing was destroyed.
-//
-// Example usage (scoped_array):
-// {
-// scoped_array<Foo> foo(new Foo[100]);
-// foo.get()->Method(); // Foo::Method on the 0th element.
-// foo[10].Method(); // Foo::Method on the 10th element.
-// }
-
#ifndef BASE_SCOPED_PTR_H_
#define BASE_SCOPED_PTR_H_
#pragma once
-// This is an implementation designed to match the anticipated future TR2
-// implementation of the scoped_ptr class, and its closely-related brethren,
-// scoped_array, scoped_ptr_malloc.
-
-#include <assert.h>
-#include <stddef.h>
-#include <stdlib.h>
-
-#include "base/compiler_specific.h"
-
-// A scoped_ptr<T> is like a T*, except that the destructor of scoped_ptr<T>
-// automatically deletes the pointer it holds (if any).
-// That is, scoped_ptr<T> owns the T object that it points to.
-// Like a T*, a scoped_ptr<T> may hold either NULL or a pointer to a T object.
-// Also like T*, scoped_ptr<T> is thread-compatible, and once you
-// dereference it, you get the threadsafety guarantees of T.
-//
-// The size of a scoped_ptr is small:
-// sizeof(scoped_ptr<C>) == sizeof(C*)
-template <class C>
-class scoped_ptr {
- public:
-
- // The element type
- typedef C element_type;
-
- // Constructor. Defaults to initializing with NULL.
- // There is no way to create an uninitialized scoped_ptr.
- // The input parameter must be allocated with new.
- explicit scoped_ptr(C* p = NULL) : ptr_(p) { }
-
- // Destructor. If there is a C object, delete it.
- // We don't need to test ptr_ == NULL because C++ does that for us.
- ~scoped_ptr() {
- enum { type_must_be_complete = sizeof(C) };
- delete ptr_;
- }
-
- // Reset. Deletes the current owned object, if any.
- // Then takes ownership of a new object, if given.
- // this->reset(this->get()) works.
- void reset(C* p = NULL) {
- if (p != ptr_) {
- enum { type_must_be_complete = sizeof(C) };
- delete ptr_;
- ptr_ = p;
- }
- }
-
- // Accessors to get the owned object.
- // operator* and operator-> will assert() if there is no current object.
- C& operator*() const {
- assert(ptr_ != NULL);
- return *ptr_;
- }
- C* operator->() const {
- assert(ptr_ != NULL);
- return ptr_;
- }
- C* get() const { return ptr_; }
-
- // Comparison operators.
- // These return whether two scoped_ptr refer to the same object, not just to
- // two different but equal objects.
- bool operator==(C* p) const { return ptr_ == p; }
- bool operator!=(C* p) const { return ptr_ != p; }
-
- // Swap two scoped pointers.
- void swap(scoped_ptr& p2) {
- C* tmp = ptr_;
- ptr_ = p2.ptr_;
- p2.ptr_ = tmp;
- }
-
- // Release a pointer.
- // The return value is the current pointer held by this object.
- // If this object holds a NULL pointer, the return value is NULL.
- // After this operation, this object will hold a NULL pointer,
- // and will not own the object any more.
- C* release() WARN_UNUSED_RESULT {
- C* retVal = ptr_;
- ptr_ = NULL;
- return retVal;
- }
-
- private:
- C* ptr_;
-
- // Forbid comparison of scoped_ptr types. If C2 != C, it totally doesn't
- // make sense, and if C2 == C, it still doesn't make sense because you should
- // never have the same object owned by two different scoped_ptrs.
- template <class C2> bool operator==(scoped_ptr<C2> const& p2) const;
- template <class C2> bool operator!=(scoped_ptr<C2> const& p2) const;
-
- // Disallow evil constructors
- scoped_ptr(const scoped_ptr&);
- void operator=(const scoped_ptr&);
-};
-
-// Free functions
-template <class C>
-void swap(scoped_ptr<C>& p1, scoped_ptr<C>& p2) {
- p1.swap(p2);
-}
-
-template <class C>
-bool operator==(C* p1, const scoped_ptr<C>& p2) {
- return p1 == p2.get();
-}
-
-template <class C>
-bool operator!=(C* p1, const scoped_ptr<C>& p2) {
- return p1 != p2.get();
-}
-
-// scoped_array<C> is like scoped_ptr<C>, except that the caller must allocate
-// with new [] and the destructor deletes objects with delete [].
-//
-// As with scoped_ptr<C>, a scoped_array<C> either points to an object
-// or is NULL. A scoped_array<C> owns the object that it points to.
-// scoped_array<T> is thread-compatible, and once you index into it,
-// the returned objects have only the threadsafety guarantees of T.
-//
-// Size: sizeof(scoped_array<C>) == sizeof(C*)
-template <class C>
-class scoped_array {
- public:
-
- // The element type
- typedef C element_type;
-
- // Constructor. Defaults to intializing with NULL.
- // There is no way to create an uninitialized scoped_array.
- // The input parameter must be allocated with new [].
- explicit scoped_array(C* p = NULL) : array_(p) { }
-
- // Destructor. If there is a C object, delete it.
- // We don't need to test ptr_ == NULL because C++ does that for us.
- ~scoped_array() {
- enum { type_must_be_complete = sizeof(C) };
- delete[] array_;
- }
-
- // Reset. Deletes the current owned object, if any.
- // Then takes ownership of a new object, if given.
- // this->reset(this->get()) works.
- void reset(C* p = NULL) {
- if (p != array_) {
- enum { type_must_be_complete = sizeof(C) };
- delete[] array_;
- array_ = p;
- }
- }
-
- // Get one element of the current object.
- // Will assert() if there is no current object, or index i is negative.
- C& operator[](ptrdiff_t i) const {
- assert(i >= 0);
- assert(array_ != NULL);
- return array_[i];
- }
-
- // Get a pointer to the zeroth element of the current object.
- // If there is no current object, return NULL.
- C* get() const {
- return array_;
- }
-
- // Comparison operators.
- // These return whether two scoped_array refer to the same object, not just to
- // two different but equal objects.
- bool operator==(C* p) const { return array_ == p; }
- bool operator!=(C* p) const { return array_ != p; }
-
- // Swap two scoped arrays.
- void swap(scoped_array& p2) {
- C* tmp = array_;
- array_ = p2.array_;
- p2.array_ = tmp;
- }
-
- // Release an array.
- // The return value is the current pointer held by this object.
- // If this object holds a NULL pointer, the return value is NULL.
- // After this operation, this object will hold a NULL pointer,
- // and will not own the object any more.
- C* release() WARN_UNUSED_RESULT {
- C* retVal = array_;
- array_ = NULL;
- return retVal;
- }
-
- private:
- C* array_;
-
- // Forbid comparison of different scoped_array types.
- template <class C2> bool operator==(scoped_array<C2> const& p2) const;
- template <class C2> bool operator!=(scoped_array<C2> const& p2) const;
-
- // Disallow evil constructors
- scoped_array(const scoped_array&);
- void operator=(const scoped_array&);
-};
-
-// Free functions
-template <class C>
-void swap(scoped_array<C>& p1, scoped_array<C>& p2) {
- p1.swap(p2);
-}
-
-template <class C>
-bool operator==(C* p1, const scoped_array<C>& p2) {
- return p1 == p2.get();
-}
-
-template <class C>
-bool operator!=(C* p1, const scoped_array<C>& p2) {
- return p1 != p2.get();
-}
-
-// This class wraps the c library function free() in a class that can be
-// passed as a template argument to scoped_ptr_malloc below.
-class ScopedPtrMallocFree {
- public:
- inline void operator()(void* x) const {
- free(x);
- }
-};
-
-// scoped_ptr_malloc<> is similar to scoped_ptr<>, but it accepts a
-// second template argument, the functor used to free the object.
-
-template<class C, class FreeProc = ScopedPtrMallocFree>
-class scoped_ptr_malloc {
- public:
-
- // The element type
- typedef C element_type;
-
- // Constructor. Defaults to initializing with NULL.
- // There is no way to create an uninitialized scoped_ptr.
- // The input parameter must be allocated with an allocator that matches the
- // Free functor. For the default Free functor, this is malloc, calloc, or
- // realloc.
- explicit scoped_ptr_malloc(C* p = NULL): ptr_(p) {}
-
- // Destructor. If there is a C object, call the Free functor.
- ~scoped_ptr_malloc() {
- free_(ptr_);
- }
-
- // Reset. Calls the Free functor on the current owned object, if any.
- // Then takes ownership of a new object, if given.
- // this->reset(this->get()) works.
- void reset(C* p = NULL) {
- if (ptr_ != p) {
- free_(ptr_);
- ptr_ = p;
- }
- }
-
- // Get the current object.
- // operator* and operator-> will cause an assert() failure if there is
- // no current object.
- C& operator*() const {
- assert(ptr_ != NULL);
- return *ptr_;
- }
-
- C* operator->() const {
- assert(ptr_ != NULL);
- return ptr_;
- }
-
- C* get() const {
- return ptr_;
- }
-
- // Comparison operators.
- // These return whether a scoped_ptr_malloc and a plain pointer refer
- // to the same object, not just to two different but equal objects.
- // For compatibility with the boost-derived implementation, these
- // take non-const arguments.
- bool operator==(C* p) const {
- return ptr_ == p;
- }
-
- bool operator!=(C* p) const {
- return ptr_ != p;
- }
-
- // Swap two scoped pointers.
- void swap(scoped_ptr_malloc & b) {
- C* tmp = b.ptr_;
- b.ptr_ = ptr_;
- ptr_ = tmp;
- }
-
- // Release a pointer.
- // The return value is the current pointer held by this object.
- // If this object holds a NULL pointer, the return value is NULL.
- // After this operation, this object will hold a NULL pointer,
- // and will not own the object any more.
- C* release() WARN_UNUSED_RESULT {
- C* tmp = ptr_;
- ptr_ = NULL;
- return tmp;
- }
-
- private:
- C* ptr_;
-
- // no reason to use these: each scoped_ptr_malloc should have its own object
- template <class C2, class GP>
- bool operator==(scoped_ptr_malloc<C2, GP> const& p) const;
- template <class C2, class GP>
- bool operator!=(scoped_ptr_malloc<C2, GP> const& p) const;
-
- static FreeProc const free_;
-
- // Disallow evil constructors
- scoped_ptr_malloc(const scoped_ptr_malloc&);
- void operator=(const scoped_ptr_malloc&);
-};
-
-template<class C, class FP>
-FP const scoped_ptr_malloc<C, FP>::free_ = FP();
-
-template<class C, class FP> inline
-void swap(scoped_ptr_malloc<C, FP>& a, scoped_ptr_malloc<C, FP>& b) {
- a.swap(b);
-}
-
-template<class C, class FP> inline
-bool operator==(C* p, const scoped_ptr_malloc<C, FP>& b) {
- return p == b.get();
-}
-
-template<class C, class FP> inline
-bool operator!=(C* p, const scoped_ptr_malloc<C, FP>& b) {
- return p != b.get();
-}
+// FIXME: Remove this header when third_party/cacheinvalidation is fixed to not
+// rely on it.
+#include "base/memory/scoped_ptr.h"
#endif // BASE_SCOPED_PTR_H_
diff --git a/base/shared_memory_unittest.cc b/base/shared_memory_unittest.cc
index b515e79..edcbb50 100644
--- a/base/shared_memory_unittest.cc
+++ b/base/shared_memory_unittest.cc
@@ -1,11 +1,11 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/basictypes.h"
#include "base/mac/scoped_nsautorelease_pool.h"
+#include "base/memory/scoped_ptr.h"
#include "base/shared_memory.h"
-#include "base/scoped_ptr.h"
#include "base/test/multiprocess_test.h"
#include "base/threading/platform_thread.h"
#include "base/time.h"
diff --git a/base/stack_container_unittest.cc b/base/stack_container_unittest.cc
index e1392c1..816ee07 100644
--- a/base/stack_container_unittest.cc
+++ b/base/stack_container_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -6,8 +6,8 @@
#include <algorithm>
+#include "base/memory/ref_counted.h"
#include "testing/gtest/include/gtest/gtest.h"
-#include "base/ref_counted.h"
namespace {
diff --git a/base/string_util.cc b/base/string_util.cc
index af96d91..1ad9abe 100644
--- a/base/string_util.cc
+++ b/base/string_util.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -22,7 +22,7 @@
#include "base/basictypes.h"
#include "base/logging.h"
-#include "base/singleton.h"
+#include "base/memory/singleton.h"
#include "base/third_party/dmg_fp/dmg_fp.h"
#include "base/utf_string_conversion_utils.h"
#include "base/utf_string_conversions.h"
diff --git a/base/synchronization/condition_variable_unittest.cc b/base/synchronization/condition_variable_unittest.cc
index cf18320..808ecde 100644
--- a/base/synchronization/condition_variable_unittest.cc
+++ b/base/synchronization/condition_variable_unittest.cc
@@ -9,7 +9,7 @@
#include <vector>
#include "base/logging.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/spin_wait.h"
#include "base/synchronization/condition_variable.h"
#include "base/synchronization/lock.h"
diff --git a/base/synchronization/waitable_event.h b/base/synchronization/waitable_event.h
index fe14e23..1ab20fa 100644
--- a/base/synchronization/waitable_event.h
+++ b/base/synchronization/waitable_event.h
@@ -16,7 +16,7 @@
#if defined(OS_POSIX)
#include <list>
#include <utility>
-#include "base/ref_counted.h"
+#include "base/memory/ref_counted.h"
#include "base/synchronization/lock.h"
#endif
diff --git a/base/task.h b/base/task.h
index 7fd5b52..8030169 100644
--- a/base/task.h
+++ b/base/task.h
@@ -7,10 +7,10 @@
#pragma once
#include "base/base_api.h"
-#include "base/raw_scoped_refptr_mismatch_checker.h"
+#include "base/memory/raw_scoped_refptr_mismatch_checker.h"
+#include "base/memory/weak_ptr.h"
#include "base/tracked.h"
#include "base/tuple.h"
-#include "base/weak_ptr.h"
// Task ------------------------------------------------------------------------
//
diff --git a/base/task_queue_unittest.cc b/base/task_queue_unittest.cc
index 90fc4cd..f2d2f49 100644
--- a/base/task_queue_unittest.cc
+++ b/base/task_queue_unittest.cc
@@ -1,9 +1,9 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/basictypes.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/task.h"
#include "base/task_queue.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/task_unittest.cc b/base/task_unittest.cc
index cc975e0..25c201d 100644
--- a/base/task_unittest.cc
+++ b/base/task_unittest.cc
@@ -1,8 +1,8 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/ref_counted.h"
+#include "base/memory/ref_counted.h"
#include "base/task.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/test/test_suite.cc b/base/test/test_suite.cc
index 42b5b90..aadd5e1 100644
--- a/base/test/test_suite.cc
+++ b/base/test/test_suite.cc
@@ -14,10 +14,10 @@
#include "base/i18n/icu_util.h"
#include "base/logging.h"
#include "base/mac/scoped_nsautorelease_pool.h"
+#include "base/memory/scoped_ptr.h"
#include "base/nss_util.h"
#include "base/path_service.h"
#include "base/process_util.h"
-#include "base/scoped_ptr.h"
#include "base/test/multiprocess_test.h"
#include "base/test/test_timeouts.h"
#include "base/time.h"
diff --git a/base/threading/non_thread_safe_unittest.cc b/base/threading/non_thread_safe_unittest.cc
index b79a4f4..01efe28 100644
--- a/base/threading/non_thread_safe_unittest.cc
+++ b/base/threading/non_thread_safe_unittest.cc
@@ -1,10 +1,10 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/basictypes.h"
#include "base/logging.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/threading/non_thread_safe.h"
#include "base/threading/simple_thread.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/threading/platform_thread_posix.cc b/base/threading/platform_thread_posix.cc
index 103145a..e880222 100644
--- a/base/threading/platform_thread_posix.cc
+++ b/base/threading/platform_thread_posix.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -8,8 +8,8 @@
#include <sched.h>
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/safe_strerror_posix.h"
-#include "base/scoped_ptr.h"
#include "base/threading/thread_restrictions.h"
#if defined(OS_MACOSX)
diff --git a/base/threading/thread_checker_unittest.cc b/base/threading/thread_checker_unittest.cc
index 9a22a8e..2808048 100644
--- a/base/threading/thread_checker_unittest.cc
+++ b/base/threading/thread_checker_unittest.cc
@@ -1,10 +1,10 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/basictypes.h"
#include "base/logging.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/threading/thread_checker.h"
#include "base/threading/simple_thread.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/threading/thread_collision_warner_unittest.cc b/base/threading/thread_collision_warner_unittest.cc
index a3d3b66..4613955 100644
--- a/base/threading/thread_collision_warner_unittest.cc
+++ b/base/threading/thread_collision_warner_unittest.cc
@@ -1,9 +1,9 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/compiler_specific.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/synchronization/lock.h"
#include "base/threading/platform_thread.h"
#include "base/threading/simple_thread.h"
diff --git a/base/threading/worker_pool_posix.cc b/base/threading/worker_pool_posix.cc
index 8466403..bd6210f 100644
--- a/base/threading/worker_pool_posix.cc
+++ b/base/threading/worker_pool_posix.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -6,7 +6,7 @@
#include "base/lazy_instance.h"
#include "base/logging.h"
-#include "base/ref_counted.h"
+#include "base/memory/ref_counted.h"
#include "base/stringprintf.h"
#include "base/task.h"
#include "base/threading/platform_thread.h"
diff --git a/base/threading/worker_pool_posix.h b/base/threading/worker_pool_posix.h
index 1b68aef..701157a 100644
--- a/base/threading/worker_pool_posix.h
+++ b/base/threading/worker_pool_posix.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
@@ -29,8 +29,8 @@
#include <string>
#include "base/basictypes.h"
-#include "base/ref_counted.h"
-#include "base/scoped_ptr.h"
+#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_ptr.h"
#include "base/synchronization/condition_variable.h"
#include "base/synchronization/lock.h"
#include "base/threading/platform_thread.h"
diff --git a/base/timer_unittest.cc b/base/timer_unittest.cc
index c2289c8..79d3a4e 100644
--- a/base/timer_unittest.cc
+++ b/base/timer_unittest.cc
@@ -1,9 +1,9 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/memory/scoped_ptr.h"
#include "base/message_loop.h"
-#include "base/scoped_ptr.h"
#include "base/task.h"
#include "base/timer.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/base/values_unittest.cc b/base/values_unittest.cc
index 5f901b5..809fe90 100644
--- a/base/values_unittest.cc
+++ b/base/values_unittest.cc
@@ -1,10 +1,10 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <limits>
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/string16.h"
#include "base/utf_string_conversions.h"
#include "base/values.h"
diff --git a/base/version_unittest.cc b/base/version_unittest.cc
index 2e3c2ca..486ef7d 100644
--- a/base/version_unittest.cc
+++ b/base/version_unittest.cc
@@ -1,8 +1,8 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/scoped_ptr.h"
+#include "base/memory/scoped_ptr.h"
#include "base/version.h"
#include "testing/gtest/include/gtest/gtest.h"