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

Unified Diff: base/win/scoped_variant.cc

Issue 1446363003: Deleted OS_WIN and all Windows specific files from base. (Closed) Base URL: https://github.com/domokit/mojo.git@base_tests
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/win/scoped_variant.h ('k') | base/win/scoped_variant_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/win/scoped_variant.cc
diff --git a/base/win/scoped_variant.cc b/base/win/scoped_variant.cc
deleted file mode 100644
index f57ab93f6c66761b006b305223cad0b9139361d4..0000000000000000000000000000000000000000
--- a/base/win/scoped_variant.cc
+++ /dev/null
@@ -1,276 +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_variant.h"
-#include "base/logging.h"
-
-namespace base {
-namespace win {
-
-// Global, const instance of an empty variant.
-const VARIANT ScopedVariant::kEmptyVariant = { VT_EMPTY };
-
-ScopedVariant::~ScopedVariant() {
- COMPILE_ASSERT(sizeof(ScopedVariant) == sizeof(VARIANT), ScopedVariantSize);
- ::VariantClear(&var_);
-}
-
-ScopedVariant::ScopedVariant(const wchar_t* str) {
- var_.vt = VT_EMPTY;
- Set(str);
-}
-
-ScopedVariant::ScopedVariant(const wchar_t* str, UINT length) {
- var_.vt = VT_BSTR;
- var_.bstrVal = ::SysAllocStringLen(str, length);
-}
-
-ScopedVariant::ScopedVariant(int value, VARTYPE vt) {
- var_.vt = vt;
- var_.lVal = value;
-}
-
-ScopedVariant::ScopedVariant(double value, VARTYPE vt) {
- DCHECK(vt == VT_R8 || vt == VT_DATE);
- var_.vt = vt;
- var_.dblVal = value;
-}
-
-ScopedVariant::ScopedVariant(IDispatch* dispatch) {
- var_.vt = VT_EMPTY;
- Set(dispatch);
-}
-
-ScopedVariant::ScopedVariant(IUnknown* unknown) {
- var_.vt = VT_EMPTY;
- Set(unknown);
-}
-
-ScopedVariant::ScopedVariant(SAFEARRAY* safearray) {
- var_.vt = VT_EMPTY;
- Set(safearray);
-}
-
-ScopedVariant::ScopedVariant(const VARIANT& var) {
- var_.vt = VT_EMPTY;
- Set(var);
-}
-
-void ScopedVariant::Reset(const VARIANT& var) {
- if (&var != &var_) {
- ::VariantClear(&var_);
- var_ = var;
- }
-}
-
-VARIANT ScopedVariant::Release() {
- VARIANT var = var_;
- var_.vt = VT_EMPTY;
- return var;
-}
-
-void ScopedVariant::Swap(ScopedVariant& var) {
- VARIANT tmp = var_;
- var_ = var.var_;
- var.var_ = tmp;
-}
-
-VARIANT* ScopedVariant::Receive() {
- DCHECK(!IsLeakableVarType(var_.vt)) << "variant leak. type: " << var_.vt;
- return &var_;
-}
-
-VARIANT ScopedVariant::Copy() const {
- VARIANT ret = { VT_EMPTY };
- ::VariantCopy(&ret, &var_);
- return ret;
-}
-
-int ScopedVariant::Compare(const VARIANT& var, bool ignore_case) const {
- ULONG flags = ignore_case ? NORM_IGNORECASE : 0;
- HRESULT hr = ::VarCmp(const_cast<VARIANT*>(&var_), const_cast<VARIANT*>(&var),
- LOCALE_USER_DEFAULT, flags);
- int ret = 0;
-
- switch (hr) {
- case VARCMP_LT:
- ret = -1;
- break;
-
- case VARCMP_GT:
- case VARCMP_NULL:
- ret = 1;
- break;
-
- default:
- // Equal.
- break;
- }
-
- return ret;
-}
-
-void ScopedVariant::Set(const wchar_t* str) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_BSTR;
- var_.bstrVal = ::SysAllocString(str);
-}
-
-void ScopedVariant::Set(int8 i8) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_I1;
- var_.cVal = i8;
-}
-
-void ScopedVariant::Set(uint8 ui8) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_UI1;
- var_.bVal = ui8;
-}
-
-void ScopedVariant::Set(int16 i16) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_I2;
- var_.iVal = i16;
-}
-
-void ScopedVariant::Set(uint16 ui16) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_UI2;
- var_.uiVal = ui16;
-}
-
-void ScopedVariant::Set(int32 i32) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_I4;
- var_.lVal = i32;
-}
-
-void ScopedVariant::Set(uint32 ui32) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_UI4;
- var_.ulVal = ui32;
-}
-
-void ScopedVariant::Set(int64 i64) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_I8;
- var_.llVal = i64;
-}
-
-void ScopedVariant::Set(uint64 ui64) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_UI8;
- var_.ullVal = ui64;
-}
-
-void ScopedVariant::Set(float r32) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_R4;
- var_.fltVal = r32;
-}
-
-void ScopedVariant::Set(double r64) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_R8;
- var_.dblVal = r64;
-}
-
-void ScopedVariant::SetDate(DATE date) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_DATE;
- var_.date = date;
-}
-
-void ScopedVariant::Set(IDispatch* disp) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_DISPATCH;
- var_.pdispVal = disp;
- if (disp)
- disp->AddRef();
-}
-
-void ScopedVariant::Set(bool b) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_BOOL;
- var_.boolVal = b ? VARIANT_TRUE : VARIANT_FALSE;
-}
-
-void ScopedVariant::Set(IUnknown* unk) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- var_.vt = VT_UNKNOWN;
- var_.punkVal = unk;
- if (unk)
- unk->AddRef();
-}
-
-void ScopedVariant::Set(SAFEARRAY* array) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- if (SUCCEEDED(::SafeArrayGetVartype(array, &var_.vt))) {
- var_.vt |= VT_ARRAY;
- var_.parray = array;
- } else {
- DCHECK(!array) << "Unable to determine safearray vartype";
- var_.vt = VT_EMPTY;
- }
-}
-
-void ScopedVariant::Set(const VARIANT& var) {
- DCHECK(!IsLeakableVarType(var_.vt)) << "leaking variant: " << var_.vt;
- if (FAILED(::VariantCopy(&var_, &var))) {
- DLOG(ERROR) << "VariantCopy failed";
- var_.vt = VT_EMPTY;
- }
-}
-
-ScopedVariant& ScopedVariant::operator=(const VARIANT& var) {
- if (&var != &var_) {
- VariantClear(&var_);
- Set(var);
- }
- return *this;
-}
-
-bool ScopedVariant::IsLeakableVarType(VARTYPE vt) {
- bool leakable = false;
- switch (vt & VT_TYPEMASK) {
- case VT_BSTR:
- case VT_DISPATCH:
- // we treat VT_VARIANT as leakable to err on the safe side.
- case VT_VARIANT:
- case VT_UNKNOWN:
- case VT_SAFEARRAY:
-
- // very rarely used stuff (if ever):
- case VT_VOID:
- case VT_PTR:
- case VT_CARRAY:
- case VT_USERDEFINED:
- case VT_LPSTR:
- case VT_LPWSTR:
- case VT_RECORD:
- case VT_INT_PTR:
- case VT_UINT_PTR:
- case VT_FILETIME:
- case VT_BLOB:
- case VT_STREAM:
- case VT_STORAGE:
- case VT_STREAMED_OBJECT:
- case VT_STORED_OBJECT:
- case VT_BLOB_OBJECT:
- case VT_VERSIONED_STREAM:
- case VT_BSTR_BLOB:
- leakable = true;
- break;
- }
-
- if (!leakable && (vt & VT_ARRAY) != 0) {
- leakable = true;
- }
-
- return leakable;
-}
-
-} // namespace win
-} // namespace base
« no previous file with comments | « base/win/scoped_variant.h ('k') | base/win/scoped_variant_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698