Sha256: d6000b8bcdc2134b6fe9ff1a4bce358cae97fd0d41efecbc121bc2165c1346b0

Contents?: true

Size: 1.21 KB

Versions: 7

Compression:

Stored size: 1.21 KB

Contents

#ifndef Rice__Director__hpp_
#define Rice__Director__hpp_

#include "cpp_api/Object.hpp"

namespace Rice
{
  /**
   * A Director works exactly as a SWIG %director works (thus the name).
   * You use this class to help build proxy classes so that polymorphism
   * works from C++ into Ruby. See the main README for how this class works.
   */
  class Director
  {
    public:
      //! Construct new Director. Needs the Ruby object so that the
      //  proxy class can call methods on that object.
      Director(Object self) : self_(self)
      {
      }

      virtual ~Director() = default;

      //! Raise a ruby exception when a call comes through for a pure virtual method
      /*! If a Ruby script calls 'super' on a method that's otherwise a pure virtual
       *  method, use this method to throw an exception in this case.
       */
      void raisePureVirtual() const
      {
        rb_raise(rb_eNotImpError, "Cannot call super() into a pure-virtual C++ method");
      }

      //! Get the Ruby object linked to this C++ instance
      Object getSelf() const { return self_; }

    private:

      // Save the Ruby object related to the instance of this class
      Object self_;

  };
}
#endif // Rice__Director__hpp_

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rice-4.3.3 rice/Director.hpp
rice-4.3.2 rice/Director.hpp
rice-4.3.1 rice/Director.hpp
rice-4.3.0 rice/Director.hpp
rice-4.2.1 rice/Director.hpp
rice-4.2.0 rice/Director.hpp
rice-4.1.0 rice/Director.hpp