polserver/pol-core/pol/syshookscript.h

85 lines
2.5 KiB
C
Raw Permalink Normal View History

/** @file
*
* @par History
*/
2015-01-19 18:18:21 +01:00
#ifndef SYSHOOKSCRIPT_H
#define SYSHOOKSCRIPT_H
#include <string>
#include <vector>
#include "../bscript/bobject.h"
2015-01-19 18:18:21 +01:00
#include "scrdef.h"
#include "uoexec.h"
namespace Pol
{
namespace Bscript
{
struct BackupStruct;
} // namespace Bscript
} // namespace Pol
2015-01-19 18:18:21 +01:00
namespace Pol
{
namespace Plib
{
class Package;
}
namespace Core
{
class ExportScript
{
public:
ExportScript( const Plib::Package* pkg, std::string scriptname );
ExportScript( const ScriptDef& isd );
bool Initialize();
const std::string& scriptname() const;
bool FindExportedFunction( const std::string& name, unsigned args, unsigned& PC ) const;
bool FindExportedFunction( const char* name, unsigned args, unsigned& PC ) const;
2015-01-19 18:18:21 +01:00
bool call( unsigned PC, Bscript::BObjectImp* p0 ); // throw()
bool call( unsigned PC, Bscript::BObjectImp* p0, Bscript::BObjectImp* p1 ); // throw()
bool call( unsigned PC, Bscript::BObjectImp* p0, Bscript::BObjectImp* p1,
Bscript::BObjectImp* p2 ); // throw()
bool call( unsigned PC, Bscript::BObjectImp* p0, Bscript::BObjectImp* p1, Bscript::BObjectImp* p2,
Bscript::BObjectImp* p3 ); // throw()
2015-01-19 18:18:21 +01:00
std::string call_string( unsigned PC, Bscript::BObjectImp* p0,
Bscript::BObjectImp* p1 ); // throw()
std::string call_string( unsigned PC, Bscript::BObjectImp* p0, Bscript::BObjectImp* p1,
Bscript::BObjectImp* p2 ); // throw()
2015-01-19 18:18:21 +01:00
int call_long( unsigned PC, Bscript::BObjectImp* p0 ); // throw()
int call_long( unsigned PC, Bscript::BObjectImp* p0, Bscript::BObjectImp* p1 ); // throw()
2015-01-19 18:18:21 +01:00
Bscript::BObjectImp* call( unsigned PC, Bscript::BObjectImp* p0,
std::vector<Bscript::BObjectRef>& pmore );
Bscript::BObject call( unsigned PC, Bscript::BObjectImp* p0, Bscript::BObjectImpRefVec& pmore );
2015-01-19 18:18:21 +01:00
Bscript::BObject call_object( unsigned PC, Bscript::BObjectImp* p0, Bscript::BObjectImp* p1 );
Bscript::BObject call_object( unsigned PC, Bscript::BObjectImp* p0, Bscript::BObjectImp* p1,
Bscript::BObjectImp* p2 );
2015-01-19 18:18:21 +01:00
void SaveStack( Bscript::BackupStruct& backup );
void LoadStack( Bscript::BackupStruct& backup );
2015-01-19 18:18:21 +01:00
size_t estimateSize() const;
friend class SystemHook;
2015-01-19 18:18:21 +01:00
private:
bool expect_bool();
int expect_int();
std::string expect_string();
Bscript::BObjectImp* expect_imp();
ScriptDef sd;
UOExecutor uoexec;
};
} // namespace Core
} // namespace Pol
2015-01-19 18:18:21 +01:00
#endif