/* Base class for all the wrapper subclasses (multiple inhertance) */
class PerlWrapper
{
    protected:
        SV* obj_ref;
        mutable PerlMethodCall m;
    public:
        PerlWrapper() {}
        virtual ~PerlWrapper()
        {
            MarkObjCppOwned(SvRV(obj_ref));
        }
        void setObject(SV *o)
        {
            if (!sv_isobject(o))
                croak("Not an object specified to setObject");
            obj_ref = newRV_inc(o);
        }
};