Code View

// SPDX-License-Identifier: MIT
#pragma once

#include <ostream>

#include <plugin/Plugin.hh>

namespace plugin
{
  namespace example
  {
    class Shape
      : public Plugin< Shape >
    {
      public:
        Shape( ) = default;

        virtual void setSize( unsigned int value )         = 0;
        virtual unsigned int getSize( ) const              = 0;
        virtual void printOn( std::ostream& stream ) const = 0;
    };
  }  // namespace example
}  // namespace plugin

inline std::ostream& operator<<( std::ostream& stream, plugin::example::Shape& object )
{
  object.printOn( stream );
  return stream;
}