1 /****************************************************************************
2 **
3 ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the Qt Solutions component.
7 **
8 ** $QT_BEGIN_LICENSE:BSD$
9 ** You may use this file under the terms of the BSD license as follows:
10 **
11 ** "Redistribution and use in source and binary forms, with or without
12 ** modification, are permitted provided that the following conditions are
13 ** met:
14 **   * Redistributions of source code must retain the above copyright
15 **     notice, this list of conditions and the following disclaimer.
16 **   * Redistributions in binary form must reproduce the above copyright
17 **     notice, this list of conditions and the following disclaimer in
18 **     the documentation and/or other materials provided with the
19 **     distribution.
20 **   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
21 **     of its contributors may be used to endorse or promote products derived
22 **     from this software without specific prior written permission.
23 **
24 **
25 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
36 **
37 ** $QT_END_LICENSE$
38 **
39 ****************************************************************************/
40 
41 
42 #ifndef QSCRIPTECMAFUNCTION_P_H
43 #define QSCRIPTECMAFUNCTION_P_H
44 
45 //
46 //  W A R N I N G
47 //  -------------
48 //
49 // This file is not part of the Qt API.  It exists purely as an
50 // implementation detail.  This header file may change from version to
51 // version without notice, or even be removed.
52 //
53 // We mean it.
54 //
55 
56 #include "qscriptecmacore_p.h"
57 
58 
59 QT_BEGIN_NAMESPACE
60 
61 namespace QScript { namespace Ecma {
62 
63 class Function: public Core
64 {
65 public:
66     Function(QScriptEnginePrivate *engine, QScriptClassInfo *classInfo);
67     virtual ~Function();
68 
69     void initialize();
70 
71     virtual void execute(QScriptContextPrivate *context);
72 
73     void newFunction(QScriptValueImpl *result, QScriptFunction *foo);
74 
75 protected:
76     QString buildFunction(QScriptContextPrivate *context);
77 
78     static QScriptValueImpl method_toString(QScriptContextPrivate *context,
79                                             QScriptEnginePrivate *eng,
80                                             QScriptClassInfo *classInfo);
81     static QScriptValueImpl method_apply(QScriptContextPrivate *context,
82                                          QScriptEnginePrivate *eng,
83                                          QScriptClassInfo *classInfo);
84     static QScriptValueImpl method_call(QScriptContextPrivate *context,
85                                         QScriptEnginePrivate *eng,
86                                         QScriptClassInfo *classInfo);
87     static QScriptValueImpl method_void(QScriptContextPrivate *context,
88                                         QScriptEnginePrivate *eng,
89                                         QScriptClassInfo *classInfo);
90     static QScriptValueImpl method_disconnect(QScriptContextPrivate *context,
91                                               QScriptEnginePrivate *eng,
92                                               QScriptClassInfo *classInfo);
93     static QScriptValueImpl method_connect(QScriptContextPrivate *context,
94                                            QScriptEnginePrivate *eng,
95                                            QScriptClassInfo *classInfo);
96 };
97 
98 } } // namespace QScript::Ecma
99 
100 QT_END_NAMESPACE
101 
102 
103 #endif
104