# jsproxy.h

Go to the documentation of this file.

    00001 // -*- c++ -*-
    00002
    00003 /*
    00004  *  Copyright (C) 2001-2004, Richard J. Moore <rich@kde.org>
    00005  *
    00006  *  This library is free software; you can redistribute it and/or
    00007  *  modify it under the terms of the GNU Library General Public
    00008  *  License as published by the Free Software Foundation; either
    00009  *  version 2 of the License, or (at your option) any later version.
    00010  *
    00011  *  This library is distributed in the hope that it will be useful,
    00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
    00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00014  *  Library General Public License for more details.
    00015  *
    00016  *  You should have received a copy of the GNU Library General Public License
    00017  *  along with this library; see the file COPYING.LIB.  If not, write to
    00018  *  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    00019  *  Boston, MA 02111-1307, USA.
    00020  */
    00021
    00022 #ifndef KJSEMBEDJSPROXY_H
    00023 #define KJSEMBEDJSPROXY_H
    00024
    00025 #include <kjs/object.h>
    00026
    00027 namespace KJSEmbed {
    00028
    00029 class JSObjectProxy;
    00030 class JSValueProxy;
    00031 class JSOpaqueProxy;
    00032
    00039 class JSProxy : public KJS::ObjectImp
    00040 {
    00041 public:
    00045     struct MethodTable {
    00046         int id;
    00047         const char *name;
    00048     };
    00049
    00051     enum ProxyType {
    00052         UnknownProxy,
    00053         ObjectProxy,
    00054         ValueProxy,
    00055         OpaqueProxy
    00056     };
    00057
    00058     JSProxy( int type );
    00059     virtual ~JSProxy();
    00060
    00061
    00063     int proxyType() const { return proxytype; }
    00064
    00066     bool isObjectProxy() const { return proxytype == ObjectProxy; }
    00067
    00069     bool isValueProxy() const { return proxytype == ValueProxy; }
    00070
    00072     bool isOpaqueProxy() const { return proxytype == OpaqueProxy; }
    00073
    00075     JSObjectProxy *toObjectProxy();
    00076
    00078     JSValueProxy *toValueProxy();
    00079
    00081     JSOpaqueProxy *toOpaqueProxy();
    00082
    00087     void *toVoidStar(); // KDE 4, virtual
    00088
    00090     bool inherits( const char *clazz );
    00091
    00096     static JSProxy *toProxy( KJS::ValueImp *imp );
    00097
    00102     static JSObjectProxy *toObjectProxy( KJS::ValueImp *imp );
    00103
    00108     static JSValueProxy *toValueProxy( KJS::ValueImp *imp );
    00109
    00114     static JSOpaqueProxy *toOpaqueProxy( KJS::ValueImp *imp );
    00115
    00116 private:
    00117     int proxytype;
    00118     class JSProxyPrivate *d;
    00119 };
    00120
    00121 } // namespace KJSEmbed
    00122
    00123 #endif // KJSEMBEDJSPROXYIMP_H
    00124
    00125 // Local Variables:
    00126 // c-basic-offset: 4
    00127 // End: