Main Page | Namespace List | Class Hierarchy | Compound List | File List | Namespace Members | Compound Members | File Members

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:

Generated on Sat May 29 03:13:07 2004 for KJSEmbed by doxygen 1.3.2