Gnash 0.8.9
|
00001 // 00002 // Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 00003 // 2011 Free Software Foundation, Inc 00004 // 00005 // This program is free software; you can redistribute it and/or modify 00006 // it under the terms of the GNU General Public License as published by 00007 // the Free Software Foundation; either version 3 of the License, or 00008 // (at your option) any later version. 00009 // 00010 // This program is distributed in the hope that it will be useful, 00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 // GNU General Public License for more details. 00014 // 00015 // You should have received a copy of the GNU General Public License 00016 // along with this program; if not, write to the Free Software 00017 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00018 00019 #ifndef GNASH_BUILTIN_FUNCTION_H 00020 #define GNASH_BUILTIN_FUNCTION_H 00021 00022 #include "UserFunction.h" 00023 #include "as_environment.h" 00024 #include "fn_call.h" 00025 00026 #include <cassert> 00027 00028 namespace gnash { 00029 00030 00032 // 00036 // 00039 class builtin_function : public UserFunction 00040 { 00041 typedef as_value (*ASFunction)(const fn_call& fn); 00042 00043 public: 00044 00046 // 00052 builtin_function(Global_as& gl, ASFunction func) 00053 : 00054 UserFunction(gl), 00055 _func(func) 00056 { 00057 } 00058 00060 // 00062 virtual boost::uint8_t registers() const { 00063 return 0; 00064 } 00065 00067 virtual as_value call(const fn_call& fn) 00068 { 00069 FrameGuard guard(getVM(fn), *this); 00070 00071 assert(_func); 00072 return _func(fn); 00073 } 00074 00075 bool isBuiltin() { return true; } 00076 00077 private: 00078 00079 ASFunction _func; 00080 }; 00081 00082 } // end of gnash namespace 00083 00084 #endif 00085