JavaMethod.h revision 81bc750723a18f21cd17d1b173cd2a4dda9cea6e
18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
24e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block * Copyright (C) 2003, 2004, 2005, 2007, 2009, 2010 Apple Inc. All rights reserved.
34e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block * Copyright 2010, The Android Open Source Project
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
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 *
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
244e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#ifndef JavaMethod_h
2881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#define JavaMethod_h
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3021939df44de1705786c545cd1bf519d47250322dBen Murdoch#if ENABLE(JAVA_BRIDGE)
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
324aeef553983e9d7a42b18646498bbd4b5a1c8c0aSteve Block#include "Bridge.h"
3320ab751acc0d49d74648373f701f3d0c4ff187c0Steve Block#include "JNIUtility.h"
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "JavaString.h"
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
374e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Blocknamespace JSC {
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
394e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Blocknamespace Bindings {
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef const char* RuntimeType;
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
434e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Blockclass JavaMethod : public Method {
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic:
454e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block    JavaMethod(JNIEnv*, jobject aMethod);
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ~JavaMethod();
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
484e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block    const JavaString& name() const { return m_name; }
49f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick    RuntimeType returnType() const { return m_returnType.utf8(); }
5081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    const WTF::String& parameterAt(int i) const { return m_parameters[i]; }
5181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    int numParameters() const { return m_parameters.size(); }
524e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block
534e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block    const char* signature() const;
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    JNIType JNIReturnType() const;
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
564e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block    jmethodID methodID(jobject obj) const;
574e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block
584e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block    bool isStatic() const { return m_isStatic; }
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate:
6181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    Vector<WTF::String> m_parameters;
624e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block    JavaString m_name;
634e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block    mutable char* m_signature;
644e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block    JavaString m_returnType;
654e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block    JNIType m_JNIReturnType;
664e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block    mutable jmethodID m_methodID;
674e226d42cbe1a5d3bd6b7e92663df661fc14adc3Steve Block    bool m_isStatic;
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace Bindings
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace JSC
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7421939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif // ENABLE(JAVA_BRIDGE)
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif // JavaMethod_h
77