Update with current status
[gnash.git] / libcore / UserFunction.h
blob204ffa33258605901b72cca84f7e05265afe493c
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 #ifndef GNASH_USER_FUNCTION_H
19 #define GNASH_USER_FUNCTION_H
21 #include "as_function.h"
23 namespace gnash {
24 class Global_as;
27 namespace gnash {
29 /// A UserFunction is a callable function defined in ActionScript
31 /// Gnash has two types of UserFunction:
33 /// 1. Function: functions parsed from a SWF
34 /// 2. builtin_function: functions implemented in C++ as though they were
35 /// These are used to implement the API functions that the proprietary
36 /// player implements in a startup script.
37 class UserFunction : public as_function
39 public:
41 /// Return the number of local registers needed
43 /// Only Function2 functions require local registers; for all others
44 /// the value should be 0.
45 virtual std::uint8_t registers() const = 0;
47 protected:
49 UserFunction(Global_as& gl) : as_function(gl) {}
51 /// This is an abstract base class!
52 virtual ~UserFunction() = 0;
56 inline UserFunction::~UserFunction() {}
60 #endif