| Index: base/win/atl_module.h
|
| ===================================================================
|
| --- base/win/atl_module.h (revision 0)
|
| +++ base/win/atl_module.h (revision 0)
|
| @@ -0,0 +1,33 @@
|
| +// 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_WIN_ATL_MODULE_H_
|
| +#define BASE_WIN_ATL_MODULE_H_
|
| +#pragma once
|
| +
|
| +namespace base {
|
| +namespace win {
|
| +
|
| +// Ensure that we have exactly one CComModule registered. It's safe to
|
| +// call this more than once. ATL functions will crash if there's no
|
| +// CComModule registered, or if you try to register two of them, so
|
| +// dynamically registering one if needed makes it much easier for us
|
| +// to support different build configurations like multi-dll without
|
| +// worrying about which side of a module boundary each ATL module object
|
| +// belongs on. Also note that CAppModule is a subclass of CComModule
|
| +// that registers itself (among other things). This function must be
|
| +// implemented in this header file rather than a source file so that
|
| +// it's inlined into the module where it's included, rather than in
|
| +// the "base" module.
|
| +void CreateATLModuleIfNeeded() {
|
| + if (_pAtlModule == NULL) {
|
| + static CComModule module;
|
| + _pAtlModule = &module;
|
| + }
|
| +}
|
| +
|
| +} // namespace win
|
| +} // namespace base
|
| +
|
| +#endif // BASE_WIN_ATL_MODULE_H_
|
|
|