#ifndef VIRTUALMETHODCALL_H_
#define VIRTUALMETHODCALL_H_

#include "MethodCallBase.h"

/**
 * handles virtual method calls
 */
class VirtualMethodCall : public MethodCallBase
{
public:
    VirtualMethodCall(Smoke *smoke, const Smoke::Index meth, const Smoke::Stack stack, zval* obj, zval **sp);
    virtual ~VirtualMethodCall();

    Marshall::Action action();
    zval* var();
    const int items();
    void callMethod();
    bool cleanup();
    bool doAlloc() { return true; }

    bool makeObject;

private:
    zval* _obj;
};

#endif /*VIRTUALMETHODCALL_H_*/
