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