Gnash
0.8.11dev
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
File Members
libcore
Function.h
Go to the documentation of this file.
1
//
2
// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
3
// Free Software Foundation, Inc
4
//
5
// This program is free software; you can redistribute it and/or modify
6
// it under the terms of the GNU General Public License as published by
7
// the Free Software Foundation; either version 3 of the License, or
8
// (at your option) any later version.
9
//
10
// This program is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
// GNU General Public License for more details.
14
//
15
// You should have received a copy of the GNU General Public License
16
// along with this program; if not, write to the Free Software
17
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19
#ifndef GNASH_SWF_FUNCTION_H
20
#define GNASH_SWF_FUNCTION_H
21
22
#include <vector>
23
#include <cassert>
24
#include <string>
25
26
#include "
ConstantPool.h
"
27
#include "
UserFunction.h
"
28
#include "
ObjectURI.h
"
29
30
// Forward declarations
31
namespace
gnash {
32
class
action_buffer;
33
class
as_object;
34
class
VM;
35
}
36
37
namespace
gnash {
38
39
class
TargetGuard
40
{
41
public
:
42
43
// @param ch : target to set temporarely
44
// @param och : original target to set temporarily
45
TargetGuard
(
as_environment
&
e
,
DisplayObject
* ch,
DisplayObject
* och);
46
~TargetGuard
();
47
48
private
:
49
50
as_environment
& env;
51
DisplayObject
* from;
52
DisplayObject
* from_orig;
53
54
};
55
57
//
61
//
63
class
Function
:
public
UserFunction
64
{
65
66
public
:
67
68
typedef
std::vector<as_object*>
ScopeStack
;
69
73
//
74
Function
(
const
action_buffer
& ab,
as_environment
& env,
size_t
start
,
75
const
ScopeStack
& with_stack);
76
77
virtual
~Function
() {}
78
79
const
ScopeStack
&
getScopeStack
()
const
{
80
return
_scopeStack;
81
}
82
83
const
action_buffer
&
getActionBuffer
()
const
{
84
return
_action_buffer;
85
}
86
87
size_t
getStartPC
()
const
{
88
return
_startPC;
89
}
90
91
size_t
getLength
()
const
{
92
return
_length;
93
}
94
96
//
98
virtual
boost::uint8_t
registers
()
const
{
99
return
0;
100
}
101
103
//
106
//
109
//
112
void
add_arg
(boost::uint8_t reg,
const
ObjectURI
& name) {
113
_args
.push_back(
Argument
(reg, name));
114
}
115
117
void
setLength
(
size_t
len);
118
120
virtual
as_value
call
(
const
fn_call
& fn);
121
123
//
127
virtual
void
markReachableResources
()
const
;
128
129
protected
:
130
131
struct
Argument
132
{
133
Argument
(boost::uint8_t
r
,
const
ObjectURI
&
n
) :
reg
(r),
name
(n) {}
134
boost::uint8_t
reg
;
135
ObjectURI
name
;
136
};
137
138
std::vector<Argument>
_args
;
139
141
as_environment
&
_env
;
142
144
const
ConstantPool
*
_pool
;
145
146
private
:
147
149
const
action_buffer
& _action_buffer;
150
152
ScopeStack
_scopeStack;
153
157
size_t
_startPC;
158
160
//
164
size_t
_length;
165
166
};
167
169
//
172
as_object
*
getArguments
(
Function
& callee,
as_object
& args,
173
const
fn_call
& fn,
as_object
* caller);
174
175
176
}
// end of gnash namespace
177
178
#endif
179
Generated on Sat Jun 30 2012 00:52:47 for Gnash by
1.8.1.1