diff options
Diffstat (limited to 'base/win/scoped_bstr.cc')
-rw-r--r-- | base/win/scoped_bstr.cc | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/base/win/scoped_bstr.cc b/base/win/scoped_bstr.cc deleted file mode 100644 index 63ade0cb42..0000000000 --- a/base/win/scoped_bstr.cc +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) 2010 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/win/scoped_bstr.h" - -#include "base/logging.h" - -namespace base { -namespace win { - -ScopedBstr::ScopedBstr(const char16* non_bstr) - : bstr_(SysAllocString(non_bstr)) { -} - -ScopedBstr::~ScopedBstr() { - COMPILE_ASSERT(sizeof(ScopedBstr) == sizeof(BSTR), ScopedBstrSize); - SysFreeString(bstr_); -} - -void ScopedBstr::Reset(BSTR bstr) { - if (bstr != bstr_) { - // if |bstr_| is NULL, SysFreeString does nothing. - SysFreeString(bstr_); - bstr_ = bstr; - } -} - -BSTR ScopedBstr::Release() { - BSTR bstr = bstr_; - bstr_ = NULL; - return bstr; -} - -void ScopedBstr::Swap(ScopedBstr& bstr2) { - BSTR tmp = bstr_; - bstr_ = bstr2.bstr_; - bstr2.bstr_ = tmp; -} - -BSTR* ScopedBstr::Receive() { - DCHECK(!bstr_) << "BSTR leak."; - return &bstr_; -} - -BSTR ScopedBstr::Allocate(const char16* str) { - Reset(SysAllocString(str)); - return bstr_; -} - -BSTR ScopedBstr::AllocateBytes(size_t bytes) { - Reset(SysAllocStringByteLen(NULL, static_cast<UINT>(bytes))); - return bstr_; -} - -void ScopedBstr::SetByteLen(size_t bytes) { - DCHECK(bstr_ != NULL) << "attempting to modify a NULL bstr"; - uint32* data = reinterpret_cast<uint32*>(bstr_); - data[-1] = static_cast<uint32>(bytes); -} - -size_t ScopedBstr::Length() const { - return SysStringLen(bstr_); -} - -size_t ScopedBstr::ByteLength() const { - return SysStringByteLen(bstr_); -} - -} // namespace win -} // namespace base |