KJsEmbed

object_binding.cpp
1 /* This file is part of the KDE libraries
2  Copyright (C) 2005, 2006 Ian Reinhart Geiser <[email protected]>
3  Copyright (C) 2005, 2006 Matt Broadstone <[email protected]>
4  Copyright (C) 2005, 2006 Richard J. Moore <[email protected]>
5  Copyright (C) 2005, 2006 Erik L. Bunce <[email protected]>
6 
7  This library is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Library General Public
9  License as published by the Free Software Foundation; either
10  version 2 of the License, or (at your option) any later version.
11 
12  This library is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  Library General Public License for more details.
16 
17  You should have received a copy of the GNU Library General Public License
18  along with this library; see the file COPYING.LIB. If not, write to
19  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20  Boston, MA 02110-1301, USA.
21 */
22 
23 #include "object_binding.h"
24 
25 #include <QArgument>
26 #include <QDebug>
27 
28 
29 using namespace KJSEmbed;
30 
31 const KJS::ClassInfo ObjectBinding::info = { "ObjectBinding", nullptr, nullptr, nullptr };
32 
33 ObjectBinding::~ObjectBinding()
34 {
35  if (m_owner == JSOwned) {
36  m_value->cleanup();
37  }
38 
39  delete m_value;
40 }
41 
42 const char *ObjectBinding::typeName() const
43 {
44  return m_name;
45 }
46 
47 KJS::UString ObjectBinding::toString(KJS::ExecState * /*exec*/) const
48 {
49  return KJS::UString(typeName());
50 }
51 
52 KJS::UString ObjectBinding::className() const
53 {
54  return KJS::UString(typeName());
55 }
56 
57 KJS::JSType ObjectBinding::type() const
58 {
59  return KJS::ObjectType;
60 }
61 
62 ObjectBinding::Ownership ObjectBinding::ownership() const
63 {
64  return m_owner;
65 }
66 
67 void ObjectBinding::setOwnership(ObjectBinding::Ownership owner)
68 {
69  m_owner = owner;
70 }
71 
72 KJS::JSValue *callPointerName(KJS::ExecState *exec, KJS::JSObject *self, const KJS::List &/*args*/)
73 {
74  KJSEmbed::ObjectBinding *imp = KJSEmbed::extractBindingImp<KJSEmbed::ObjectBinding>(exec, self);
75  if (imp) {
76  return KJS::jsString(imp->typeName());
77  }
78  return KJS::jsNull();
79 }
80 
81 KJS::JSValue *callPointerCast(KJS::ExecState *exec, KJS::JSObject *self, const KJS::List &/*args*/)
82 {
83  KJSEmbed::ObjectBinding *imp = KJSEmbed::extractBindingImp<KJSEmbed::ObjectBinding>(exec, self);
84  if (imp) {
85  return KJS::jsBoolean(false);
86  }
87  return KJS::jsNull();
88 }
89 
90 KJS::JSValue *callPointerToString(KJS::ExecState *exec, KJS::JSObject *self, const KJS::List &/*args*/)
91 {
92  KJSEmbed::ObjectBinding *imp = KJSEmbed::extractBindingImp<KJSEmbed::ObjectBinding>(exec, self);
93  if (imp) {
94  qDebug("Object to string");
95  return KJS::jsString(imp->typeName());
96  }
97  return KJS::jsNull();
98 }
99 
100 const Method ObjectFactory::ObjectMethods[] = {
101  {"type", 0, KJS::DontDelete | KJS::ReadOnly, &callPointerName },
102  {"cast", 1, KJS::DontDelete | KJS::ReadOnly, &callPointerCast },
103  {"toString", 0, KJS::DontDelete | KJS::ReadOnly, &callPointerToString },
104  {nullptr, 0, 0, nullptr }
105 };
106 
QString typeName(const QJsonObject &obj)
Method structure.
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Sun Dec 10 2023 03:59:19 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.