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 JavaFieldJSC_h 2881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#define JavaFieldJSC_h 29a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 3021939df44de1705786c545cd1bf519d47250322dBen Murdoch#if ENABLE(JAVA_BRIDGE) 31a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 3253733164eb6cabab5a1eddcabb42e4ce27eb0e44Ben Murdoch#include "BridgeJSC.h" 3381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "JNIUtility.h" 3481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "JavaMethod.h" 3581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "JavaString.h" 3681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "JobjectWrapper.h" 37a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 38a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Blocknamespace JSC { 39a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 40a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Blocknamespace Bindings { 41a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 42a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Blockclass JavaField : public Field { 43a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Blockpublic: 44a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block JavaField(JNIEnv*, jobject aField); 45a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 46a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block virtual JSValue valueFromInstance(ExecState*, const Instance*) const; 47a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block virtual void setValueToInstance(ExecState*, const Instance*, JSValue) const; 48a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 49a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block const JavaString& name() const { return m_name; } 502bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual RuntimeType typeClassName() const { return m_typeClassName.utf8(); } 512bde8e466a4451c7319e3a072d118917957d6554Steve Block JavaType type() const { return m_type; } 52a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 53a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Blockprivate: 54a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block void dispatchSetValueToInstance(ExecState*, const JavaInstance*, jvalue, const char* name, const char* sig) const; 552bde8e466a4451c7319e3a072d118917957d6554Steve Block jvalue dispatchValueFromInstance(ExecState*, const JavaInstance*, const char* name, const char* sig, JavaType returnType) const; 56a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 57a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block JavaString m_name; 582bde8e466a4451c7319e3a072d118917957d6554Steve Block JavaString m_typeClassName; 592bde8e466a4451c7319e3a072d118917957d6554Steve Block JavaType m_type; 6081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch RefPtr<JobjectWrapper> m_field; 61a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block}; 62a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 63a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block} // namespace Bindings 64a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 65a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block} // namespace JSC 66a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 6721939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif // ENABLE(JAVA_BRIDGE) 68a96d9eff8bdc7ed33739f5779a8d40ab1b3ae24fSteve Block 6981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif // JavaFieldJSC_h 70