18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2010 Company 100 Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * its contributors may be used to endorse or promote products derived 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * from this software without specific prior written permission. 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 29dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#ifndef ShellBrew_h 30dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#define ShellBrew_h 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 32dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include <AEEAppGen.h> 33dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include <AEEStdLib.h> 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 35dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include <wtf/Assertions.h> 36dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include <wtf/PassOwnPtr.h> 37cad810f21b803229eb11403f9209855525a25d57Steve Block#include <wtf/RefPtr.h> 38dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 39dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blocknamespace WTF { 40dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 41dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blocktemplate <typename T> 42dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockstatic inline PassOwnPtr<T> createInstance(AEECLSID cls) 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 44dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block T* instance = 0; 45dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 46dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block IShell* shell = reinterpret_cast<AEEApplet*>(GETAPPINSTANCE())->m_pIShell; 47dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block ISHELL_CreateInstance(shell, cls, reinterpret_cast<void**>(&instance)); 48dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block ASSERT(instance); 49dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 50dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return instance; 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 53a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochtemplate <typename T> 54cad810f21b803229eb11403f9209855525a25d57Steve Blockstatic inline RefPtr<T> createRefPtrInstance(AEECLSID cls) 55a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 56a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch T* instance = 0; 57a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 58a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch IShell* shell = reinterpret_cast<AEEApplet*>(GETAPPINSTANCE())->m_pIShell; 59a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch ISHELL_CreateInstance(shell, cls, reinterpret_cast<void**>(&instance)); 60a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch ASSERT(instance); 61a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 62cad810f21b803229eb11403f9209855525a25d57Steve Block return adoptRef(instance); 63a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 64a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 65dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} // namespace WTF 66dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 67dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockusing WTF::createInstance; 68a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochusing WTF::createRefPtrInstance; 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif // ShellBrew_h 71