#ifndef METHODCALL_H_
#define METHODCALL_H_

#include "MethodCallBase.h"
#include "smoke.h"
#include "php.h"

class MethodCall : public MethodCallBase
{
public:
	MethodCall(Smoke *smoke, const Smoke::Index method, zval* target, zval ***sp, zval *&retval);
	virtual ~MethodCall();
	Marshall::Action action();
	zval* var();
	void callMethod();
	virtual const int items();
	bool cleanup();
	bool doAlloc() { return false; }

private:
	zval* _target;
	void *_current_object;
	Smoke::Index _current_object_class;
	int _items;
	zval *&_retval;
};

#endif /*METHODCALL_H_*/
