JavaArrayJSC.h revision 81bc750723a18f21cd17d1b173cd2a4dda9cea6e
1a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block/* 2a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * Copyright (C) 2003, 2004, 2005, 2007, 2009, 2010 Apple Inc. All rights reserved. 3a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * Copyright 2010, The Android Open Source Project 4a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * 5a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * Redistribution and use in source and binary forms, with or without 6a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * modification, are permitted provided that the following conditions 7a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * are met: 8a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * 1. Redistributions of source code must retain the above copyright 9a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * notice, this list of conditions and the following disclaimer. 10a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * 2. Redistributions in binary form must reproduce the above copyright 11a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * notice, this list of conditions and the following disclaimer in the 12a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * documentation and/or other materials provided with the distribution. 13a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * 14a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 15a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 17a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 18a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 19a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 20a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 21a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 22a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 24a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block */ 26a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 2781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#ifndef JavaArrayJSC_h 2881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#define JavaArrayJSC_h 29a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 3021939df44de1705786c545cd1bf519d47250322dBen Murdoch#if ENABLE(JAVA_BRIDGE) 31a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 3253733164eb6cabab5a1eddcabb42e4ce27eb0e44Ben Murdoch#include "BridgeJSC.h" 3381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "JNIUtility.h" 3481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "JobjectWrapper.h" 35a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 36a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Blocknamespace JSC { 37a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 38a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Blocknamespace Bindings { 39a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 40a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Blockclass JavaArray : public Array { 41a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Blockpublic: 42a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block JavaArray(jobject array, const char* type, PassRefPtr<RootObject>); 43a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block virtual ~JavaArray(); 44a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 45a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block RootObject* rootObject() const; 46a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 47a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block virtual void setValueAt(ExecState*, unsigned int index, JSValue) const; 48a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block virtual JSValue valueAt(ExecState*, unsigned int index) const; 49a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block virtual unsigned int getLength() const; 50a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 51a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block jobject javaArray() const { return m_array->m_instance; } 52a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 53a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block static JSValue convertJObjectToArray(ExecState*, jobject, const char* type, PassRefPtr<RootObject>); 54a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 55a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Blockprivate: 5681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch RefPtr<JobjectWrapper> m_array; 57a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block unsigned int m_length; 58a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block const char* m_type; 59a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block}; 60a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 61a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block} // namespace Bindings 62a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 63a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block} // namespace JSC 64a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 6521939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif // ENABLE(JAVA_BRIDGE) 66a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 6781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif // JavaArrayJSC_h 68