first commit
This commit is contained in:
88
include/engine/script/script_unit.h
Normal file
88
include/engine/script/script_unit.h
Normal file
@ -0,0 +1,88 @@
|
||||
/* -----------------------------------------------------------------------------
|
||||
GSFramework
|
||||
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
||||
----------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
#ifndef __NSCRIPTUNIT__
|
||||
#define __NSCRIPTUNIT__
|
||||
|
||||
|
||||
#include "script/script_vm.h"
|
||||
#include "data/nvariant.h"
|
||||
|
||||
|
||||
namespace GS {
|
||||
namespace NML { class Tag; }
|
||||
namespace Script {
|
||||
|
||||
/*!
|
||||
@short Script unit.
|
||||
@author Emmanuel Julien (ejulien@gsworks.fr)
|
||||
*/
|
||||
class Unit
|
||||
{
|
||||
protected:
|
||||
|
||||
Object *self;
|
||||
|
||||
uint iface_type; ///< Interface object type.
|
||||
void *iface_object; ///< Interface object.
|
||||
|
||||
public:
|
||||
|
||||
sVM vm;
|
||||
|
||||
const Object *Self() const { return self; }
|
||||
|
||||
List <GS::Variant *> parm_list;
|
||||
|
||||
String script_file, ///< Script file to process.
|
||||
script_class; ///< Class to instantiate upon setup.
|
||||
|
||||
/// Set unit interface object.
|
||||
void SetInterfaceObject(void *p, uint type)
|
||||
{
|
||||
iface_object = p;
|
||||
iface_type = type;
|
||||
}
|
||||
/// Get unit interface object.
|
||||
void GetInterfaceObject(void *&p, uint &type)
|
||||
{
|
||||
p = iface_object;
|
||||
type = iface_type;
|
||||
}
|
||||
|
||||
/*!
|
||||
@name Runtime.
|
||||
@{
|
||||
*/
|
||||
/// Open component.
|
||||
virtual bool Open();
|
||||
/// Close component.
|
||||
virtual void Close();
|
||||
/// Is unit open.
|
||||
bool IsOpen() const { return asbool(self); }
|
||||
|
||||
/// Setup a function call in the VM.
|
||||
virtual bool SetupFunctionCall(const char *func, const Object *func_object = 0);
|
||||
/// Push user object function call argument.
|
||||
virtual bool PushUserObjectFunctionCallArgument(void *, uint, bool managed = false);
|
||||
/// Push function call argument.
|
||||
virtual bool PushFunctionCallArgument(const Variant &);
|
||||
/// Execute a function call in the VM, return value as a variant.
|
||||
virtual bool DoFunctionCall(Variant *return_value = 0);
|
||||
/// @}
|
||||
|
||||
bool FromMetaTag(NML::Tag &);
|
||||
NML::Tag *AsMetaTag() const;
|
||||
|
||||
Unit(IVM *);
|
||||
virtual ~Unit();
|
||||
};
|
||||
|
||||
} // Script
|
||||
} // GS
|
||||
|
||||
|
||||
#endif // __NSCRIPTUNIT__
|
||||
Reference in New Issue
Block a user