OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef BASE_SCOPED_BSTR_WIN_H_ | 5 #ifndef BASE_SCOPED_BSTR_WIN_H_ |
6 #define BASE_SCOPED_BSTR_WIN_H_ | 6 #define BASE_SCOPED_BSTR_WIN_H_ |
7 | 7 |
8 #include "base/basictypes.h" // needed to pick up OS_WIN | |
9 | |
10 #include "base/logging.h" | |
11 | |
12 #include <windows.h> | 8 #include <windows.h> |
13 #include <oleauto.h> | 9 #include <oleauto.h> |
14 | 10 |
| 11 #include "base/logging.h" |
| 12 |
15 // Manages a BSTR string pointer. | 13 // Manages a BSTR string pointer. |
16 // The class interface is based on scoped_ptr. | 14 // The class interface is based on scoped_ptr. |
17 class ScopedBstr { | 15 class ScopedBstr { |
18 public: | 16 public: |
19 ScopedBstr() : bstr_(NULL) { | 17 ScopedBstr() : bstr_(NULL) { |
20 } | 18 } |
21 | 19 |
22 // Constructor to create a new BSTR. | 20 // Constructor to create a new BSTR. |
23 // NOTE: Do not pass a BSTR to this constructor expecting ownership to | 21 // NOTE: Do not pass a BSTR to this constructor expecting ownership to |
24 // be transferred - even though it compiles! ;-) | 22 // be transferred - even though it compiles! ;-) |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 // (e.g. if the BSTR is used inside a loop or more than one place), | 132 // (e.g. if the BSTR is used inside a loop or more than one place), |
135 // use StackBstrVar to declare a variable. | 133 // use StackBstrVar to declare a variable. |
136 // Example: | 134 // Example: |
137 // StackBstrVar(L"my_property", myprop); | 135 // StackBstrVar(L"my_property", myprop); |
138 // for (int i = 0; i < objects.length(); ++i) | 136 // for (int i = 0; i < objects.length(); ++i) |
139 // ProcessValue(objects[i].GetProp(myprop)); // GetProp accepts BSTR | 137 // ProcessValue(objects[i].GetProp(myprop)); // GetProp accepts BSTR |
140 #define StackBstrVar(str, var) \ | 138 #define StackBstrVar(str, var) \ |
141 StackBstrT<sizeof(str)> var(str) | 139 StackBstrT<sizeof(str)> var(str) |
142 | 140 |
143 #endif // BASE_SCOPED_BSTR_WIN_H_ | 141 #endif // BASE_SCOPED_BSTR_WIN_H_ |
OLD | NEW |