Kaydet (Commit) f781997e authored tarafından Jochen Nitschke's avatar Jochen Nitschke Kaydeden (comit) Michael Stahl

tdf#94306 replace boost::noncopyable in c...

comphelper, connectivity and cppcanvas.

Replace with C++11 delete copy-constructur
and copy-assignment.
Removed unused boost/noncopyable.hpp includes from
some source files in cppcanvas.

Change-Id: I90780820e21fbfd291ac10c266e7d16616e3a81b
Reviewed-on: https://gerrit.libreoffice.org/23905Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMichael Stahl <mstahl@redhat.com>
üst 98d7b02f
...@@ -42,8 +42,6 @@ ...@@ -42,8 +42,6 @@
#include <memory> #include <memory>
#include <utility> #include <utility>
#include <boost/noncopyable.hpp>
namespace comphelper namespace comphelper
{ {
...@@ -212,7 +210,7 @@ namespace comphelper ...@@ -212,7 +210,7 @@ namespace comphelper
}; };
class MapEnumerator: private boost::noncopyable class MapEnumerator
{ {
public: public:
MapEnumerator( ::cppu::OWeakObject& _rParent, MapData& _mapData, const EnumerationType _type ) MapEnumerator( ::cppu::OWeakObject& _rParent, MapData& _mapData, const EnumerationType _type )
...@@ -239,6 +237,10 @@ namespace comphelper ...@@ -239,6 +237,10 @@ namespace comphelper
} }
} }
// noncopyable
MapEnumerator(const MapEnumerator&) = delete;
const MapEnumerator& operator=(const MapEnumerator&) = delete;
// XEnumeration equivalents // XEnumeration equivalents
bool hasMoreElements(); bool hasMoreElements();
Any nextElement(); Any nextElement();
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
#include <com/sun/star/lang/XSingleComponentFactory.hpp> #include <com/sun/star/lang/XSingleComponentFactory.hpp>
#include <cassert> #include <cassert>
#include <vector> #include <vector>
#include <boost/noncopyable.hpp>
using namespace com::sun::star; using namespace com::sun::star;
...@@ -36,12 +35,14 @@ namespace service_decl { ...@@ -36,12 +35,14 @@ namespace service_decl {
class ServiceDecl::Factory : class ServiceDecl::Factory :
public cppu::WeakImplHelper<lang::XSingleComponentFactory, public cppu::WeakImplHelper<lang::XSingleComponentFactory,
lang::XServiceInfo>, lang::XServiceInfo>
private boost::noncopyable
{ {
public: public:
explicit Factory( ServiceDecl const& rServiceDecl ) explicit Factory( ServiceDecl const& rServiceDecl )
: m_rServiceDecl(rServiceDecl) {} : m_rServiceDecl(rServiceDecl) {}
// noncopyable
Factory(const Factory&) = delete;
const Factory& operator=(const Factory&) = delete;
// XServiceInfo: // XServiceInfo:
virtual OUString SAL_CALL getImplementationName() virtual OUString SAL_CALL getImplementationName()
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include <com/sun/star/uno/XComponentContext.hpp> #include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/container/XSet.hpp> #include <com/sun/star/container/XSet.hpp>
#include <boost/noncopyable.hpp>
#include <cppuhelper/implbase5.hxx> #include <cppuhelper/implbase5.hxx>
#include <comphelper/interfacecontainer2.hxx> #include <comphelper/interfacecontainer2.hxx>
#include <comphelper/propstate.hxx> #include <comphelper/propstate.hxx>
...@@ -71,7 +70,6 @@ namespace comphelper ...@@ -71,7 +70,6 @@ namespace comphelper
,public OPropertyBag_PBase ,public OPropertyBag_PBase
,public OPropertyBag_Base ,public OPropertyBag_Base
,public ::cppu::IEventNotificationHook ,public ::cppu::IEventNotificationHook
,private boost::noncopyable
{ {
private: private:
/// our IPropertyArrayHelper implementation /// our IPropertyArrayHelper implementation
...@@ -90,6 +88,10 @@ namespace comphelper ...@@ -90,6 +88,10 @@ namespace comphelper
bool m_isModified; bool m_isModified;
public: public:
//noncopyable
OPropertyBag(const OPropertyBag&) = delete;
const OPropertyBag& operator=(const OPropertyBag&) = delete;
// XServiceInfo - static versions // XServiceInfo - static versions
static css::uno::Sequence< OUString > getSupportedServiceNames_static() throw( css::uno::RuntimeException ); static css::uno::Sequence< OUString > getSupportedServiceNames_static() throw( css::uno::RuntimeException );
static OUString getImplementationName_static() throw( css::uno::RuntimeException ); static OUString getImplementationName_static() throw( css::uno::RuntimeException );
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include "comphelper_module.hxx" #include "comphelper_module.hxx"
#include "comphelper_services.hxx" #include "comphelper_services.hxx"
#include <boost/noncopyable.hpp>
#include <osl/mutex.hxx> #include <osl/mutex.hxx>
#include <cppuhelper/factory.hxx> #include <cppuhelper/factory.hxx>
#include <cppuhelper/implementationentry.hxx> #include <cppuhelper/implementationentry.hxx>
...@@ -44,12 +43,15 @@ class SequenceInputStreamService: ...@@ -44,12 +43,15 @@ class SequenceInputStreamService:
public ::cppu::WeakImplHelper< public ::cppu::WeakImplHelper<
lang::XServiceInfo, lang::XServiceInfo,
io::XSeekableInputStream, io::XSeekableInputStream,
lang::XInitialization>, lang::XInitialization>
private boost::noncopyable
{ {
public: public:
explicit SequenceInputStreamService(); explicit SequenceInputStreamService();
// noncopyable
SequenceInputStreamService(const SequenceInputStreamService&) = delete;
const SequenceInputStreamService& operator=(const SequenceInputStreamService&) = delete;
// css::lang::XServiceInfo: // css::lang::XServiceInfo:
virtual OUString SAL_CALL getImplementationName() throw ( uno::RuntimeException, std::exception ) override; virtual OUString SAL_CALL getImplementationName() throw ( uno::RuntimeException, std::exception ) override;
virtual sal_Bool SAL_CALL supportsService( const OUString & ServiceName ) throw ( uno::RuntimeException, std::exception ) override; virtual sal_Bool SAL_CALL supportsService( const OUString & ServiceName ) throw ( uno::RuntimeException, std::exception ) override;
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include "comphelper_module.hxx" #include "comphelper_module.hxx"
#include "comphelper_services.hxx" #include "comphelper_services.hxx"
#include <boost/noncopyable.hpp>
#include <osl/mutex.hxx> #include <osl/mutex.hxx>
#include <cppuhelper/factory.hxx> #include <cppuhelper/factory.hxx>
#include <cppuhelper/implementationentry.hxx> #include <cppuhelper/implementationentry.hxx>
...@@ -39,12 +38,15 @@ using namespace ::com::sun::star; ...@@ -39,12 +38,15 @@ using namespace ::com::sun::star;
namespace { namespace {
class SequenceOutputStreamService: class SequenceOutputStreamService:
public cppu::WeakImplHelper<lang::XServiceInfo, io::XSequenceOutputStream>, public cppu::WeakImplHelper<lang::XServiceInfo, io::XSequenceOutputStream>
private boost::noncopyable
{ {
public: public:
explicit SequenceOutputStreamService(); explicit SequenceOutputStreamService();
// noncopyable
SequenceOutputStreamService(const SequenceOutputStreamService&) = delete;
const SequenceOutputStreamService& operator=(const SequenceOutputStreamService&) = delete;
// css::lang::XServiceInfo: // css::lang::XServiceInfo:
virtual OUString SAL_CALL getImplementationName() throw ( uno::RuntimeException, std::exception ) override; virtual OUString SAL_CALL getImplementationName() throw ( uno::RuntimeException, std::exception ) override;
virtual sal_Bool SAL_CALL supportsService( const OUString & ServiceName ) throw ( uno::RuntimeException, std::exception ) override; virtual sal_Bool SAL_CALL supportsService( const OUString & ServiceName ) throw ( uno::RuntimeException, std::exception ) override;
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#include <sal/config.h> #include <sal/config.h>
#include <boost/noncopyable.hpp>
#include <connectivity/TTableHelper.hxx> #include <connectivity/TTableHelper.hxx>
#include <com/sun/star/sdbc/XRow.hpp> #include <com/sun/star/sdbc/XRow.hpp>
#include <com/sun/star/sdbc/XResultSet.hpp> #include <com/sun/star/sdbc/XResultSet.hpp>
...@@ -55,8 +54,7 @@ namespace ...@@ -55,8 +54,7 @@ namespace
{ {
/// helper class for column property change events which holds the OComponentDefinition weak /// helper class for column property change events which holds the OComponentDefinition weak
class OTableContainerListener: class OTableContainerListener:
public ::cppu::WeakImplHelper< XContainerListener >, public ::cppu::WeakImplHelper< XContainerListener >
private boost::noncopyable
{ {
OTableHelper* m_pComponent; OTableHelper* m_pComponent;
::std::map< OUString,bool> m_aRefNames; ::std::map< OUString,bool> m_aRefNames;
...@@ -65,6 +63,9 @@ protected: ...@@ -65,6 +63,9 @@ protected:
virtual ~OTableContainerListener(){} virtual ~OTableContainerListener(){}
public: public:
explicit OTableContainerListener(OTableHelper* _pComponent) : m_pComponent(_pComponent){} explicit OTableContainerListener(OTableHelper* _pComponent) : m_pComponent(_pComponent){}
// noncopyable
OTableContainerListener(const OTableContainerListener&) = delete;
const OTableContainerListener& operator=(const OTableContainerListener&) = delete;
virtual void SAL_CALL elementInserted( const ::com::sun::star::container::ContainerEvent& /*Event*/ ) throw (RuntimeException, std::exception) override virtual void SAL_CALL elementInserted( const ::com::sun::star::container::ContainerEvent& /*Event*/ ) throw (RuntimeException, std::exception) override
{ {
} }
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
#include <basegfx/point/b2dpoint.hxx> #include <basegfx/point/b2dpoint.hxx>
#include <basegfx/range/b2drange.hxx> #include <basegfx/range/b2drange.hxx>
#include <basegfx/tools/canvastools.hxx> #include <basegfx/tools/canvastools.hxx>
#include <boost/noncopyable.hpp>
#include "cachedprimitivebase.hxx" #include "cachedprimitivebase.hxx"
#include "bitmapaction.hxx" #include "bitmapaction.hxx"
#include "outdevstate.hxx" #include "outdevstate.hxx"
......
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
#include <com/sun/star/rendering/XCanvas.hpp> #include <com/sun/star/rendering/XCanvas.hpp>
#include <cppcanvas/canvas.hxx> #include <cppcanvas/canvas.hxx>
#include <boost/noncopyable.hpp>
#include "action.hxx" #include "action.hxx"
...@@ -46,8 +45,7 @@ namespace cppcanvas ...@@ -46,8 +45,7 @@ namespace cppcanvas
class' public render() method gets called, the cached class' public render() method gets called, the cached
representation is taken. representation is taken.
*/ */
class CachedPrimitiveBase : public Action, class CachedPrimitiveBase : public Action
private ::boost::noncopyable
{ {
public: public:
/** Constructor /** Constructor
...@@ -65,6 +63,9 @@ namespace cppcanvas ...@@ -65,6 +63,9 @@ namespace cppcanvas
bool bOnlyRedrawWithSameTransform ); bool bOnlyRedrawWithSameTransform );
virtual ~CachedPrimitiveBase() {} virtual ~CachedPrimitiveBase() {}
CachedPrimitiveBase(const CachedPrimitiveBase&) = delete;
const CachedPrimitiveBase& operator=(const CachedPrimitiveBase&) = delete;
virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override; virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override;
protected: protected:
......
...@@ -31,8 +31,6 @@ ...@@ -31,8 +31,6 @@
#include <basegfx/tools/canvastools.hxx> #include <basegfx/tools/canvastools.hxx>
#include <canvas/canvastools.hxx> #include <canvas/canvastools.hxx>
#include <boost/noncopyable.hpp>
#include <cppcanvas/canvas.hxx> #include <cppcanvas/canvas.hxx>
#include <mtftools.hxx> #include <mtftools.hxx>
...@@ -46,7 +44,7 @@ namespace cppcanvas ...@@ -46,7 +44,7 @@ namespace cppcanvas
{ {
namespace namespace
{ {
class LineAction : public Action, private ::boost::noncopyable class LineAction : public Action
{ {
public: public:
LineAction( const ::basegfx::B2DPoint&, LineAction( const ::basegfx::B2DPoint&,
...@@ -54,6 +52,9 @@ namespace cppcanvas ...@@ -54,6 +52,9 @@ namespace cppcanvas
const CanvasSharedPtr&, const CanvasSharedPtr&,
const OutDevState& ); const OutDevState& );
LineAction(const LineAction&) = delete;
const LineAction& operator=(const LineAction&) = delete;
virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override; virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override;
virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation, virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation,
const Subset& rSubset ) const override; const Subset& rSubset ) const override;
......
...@@ -28,8 +28,6 @@ ...@@ -28,8 +28,6 @@
#include <basegfx/tools/canvastools.hxx> #include <basegfx/tools/canvastools.hxx>
#include <canvas/canvastools.hxx> #include <canvas/canvastools.hxx>
#include <boost/noncopyable.hpp>
#include "pointaction.hxx" #include "pointaction.hxx"
#include "outdevstate.hxx" #include "outdevstate.hxx"
#include "cppcanvas/canvas.hxx" #include "cppcanvas/canvas.hxx"
...@@ -44,7 +42,7 @@ namespace cppcanvas ...@@ -44,7 +42,7 @@ namespace cppcanvas
{ {
namespace namespace
{ {
class PointAction : public Action, private ::boost::noncopyable class PointAction : public Action
{ {
public: public:
PointAction( const ::basegfx::B2DPoint&, PointAction( const ::basegfx::B2DPoint&,
...@@ -55,6 +53,9 @@ namespace cppcanvas ...@@ -55,6 +53,9 @@ namespace cppcanvas
const OutDevState&, const OutDevState&,
const ::Color& ); const ::Color& );
PointAction(const PointAction&) = delete;
const PointAction& operator=(const PointAction&) = delete;
virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override; virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override;
virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation, virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation,
const Subset& rSubset ) const override; const Subset& rSubset ) const override;
......
...@@ -31,8 +31,6 @@ ...@@ -31,8 +31,6 @@
#include <basegfx/matrix/b2dhommatrix.hxx> #include <basegfx/matrix/b2dhommatrix.hxx>
#include <canvas/canvastools.hxx> #include <canvas/canvastools.hxx>
#include <boost/noncopyable.hpp>
#include "cachedprimitivebase.hxx" #include "cachedprimitivebase.hxx"
#include "polypolyaction.hxx" #include "polypolyaction.hxx"
#include "outdevstate.hxx" #include "outdevstate.hxx"
......
...@@ -41,7 +41,6 @@ ...@@ -41,7 +41,6 @@
#include <canvas/canvastools.hxx> #include <canvas/canvastools.hxx>
#include <memory> #include <memory>
#include <boost/noncopyable.hpp>
#include "textaction.hxx" #include "textaction.hxx"
#include "outdevstate.hxx" #include "outdevstate.hxx"
...@@ -606,7 +605,7 @@ namespace cppcanvas ...@@ -606,7 +605,7 @@ namespace cppcanvas
} }
class TextAction : public Action, private ::boost::noncopyable class TextAction : public Action
{ {
public: public:
TextAction( const ::basegfx::B2DPoint& rStartPoint, TextAction( const ::basegfx::B2DPoint& rStartPoint,
...@@ -624,6 +623,9 @@ namespace cppcanvas ...@@ -624,6 +623,9 @@ namespace cppcanvas
const OutDevState& rState, const OutDevState& rState,
const ::basegfx::B2DHomMatrix& rTextTransform ); const ::basegfx::B2DHomMatrix& rTextTransform );
TextAction(const TextAction&) = delete;
const TextAction& operator=(const TextAction&) = delete;
virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override; virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override;
virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation, virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation,
const Subset& rSubset ) const override; const Subset& rSubset ) const override;
...@@ -759,8 +761,7 @@ namespace cppcanvas ...@@ -759,8 +761,7 @@ namespace cppcanvas
class EffectTextAction : class EffectTextAction :
public Action, public Action,
public TextRenderer, public TextRenderer
private ::boost::noncopyable
{ {
public: public:
EffectTextAction( const ::basegfx::B2DPoint& rStartPoint, EffectTextAction( const ::basegfx::B2DPoint& rStartPoint,
...@@ -788,6 +789,9 @@ namespace cppcanvas ...@@ -788,6 +789,9 @@ namespace cppcanvas
const OutDevState& rState, const OutDevState& rState,
const ::basegfx::B2DHomMatrix& rTextTransform ); const ::basegfx::B2DHomMatrix& rTextTransform );
EffectTextAction(const EffectTextAction&) = delete;
const EffectTextAction& operator=(const EffectTextAction&) = delete;
virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override; virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override;
virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation, virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation,
const Subset& rSubset ) const override; const Subset& rSubset ) const override;
...@@ -996,7 +1000,7 @@ namespace cppcanvas ...@@ -996,7 +1000,7 @@ namespace cppcanvas
} }
class TextArrayAction : public Action, private ::boost::noncopyable class TextArrayAction : public Action
{ {
public: public:
TextArrayAction( const ::basegfx::B2DPoint& rStartPoint, TextArrayAction( const ::basegfx::B2DPoint& rStartPoint,
...@@ -1016,6 +1020,9 @@ namespace cppcanvas ...@@ -1016,6 +1020,9 @@ namespace cppcanvas
const OutDevState& rState, const OutDevState& rState,
const ::basegfx::B2DHomMatrix& rTextTransform ); const ::basegfx::B2DHomMatrix& rTextTransform );
TextArrayAction(const TextArrayAction&) = delete;
const TextArrayAction& operator=(const TextArrayAction&) = delete;
virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override; virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override;
virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation, virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation,
const Subset& rSubset ) const override; const Subset& rSubset ) const override;
...@@ -1174,8 +1181,7 @@ namespace cppcanvas ...@@ -1174,8 +1181,7 @@ namespace cppcanvas
class EffectTextArrayAction : class EffectTextArrayAction :
public Action, public Action,
public TextRenderer, public TextRenderer
private ::boost::noncopyable
{ {
public: public:
EffectTextArrayAction( const ::basegfx::B2DPoint& rStartPoint, EffectTextArrayAction( const ::basegfx::B2DPoint& rStartPoint,
...@@ -1204,6 +1210,9 @@ namespace cppcanvas ...@@ -1204,6 +1210,9 @@ namespace cppcanvas
const OutDevState& rState, const OutDevState& rState,
const ::basegfx::B2DHomMatrix& rTextTransform ); const ::basegfx::B2DHomMatrix& rTextTransform );
EffectTextArrayAction(const EffectTextArrayAction&) = delete;
const EffectTextArrayAction& operator=(const EffectTextArrayAction&);
virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override; virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override;
virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation, virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation,
const Subset& rSubset ) const override; const Subset& rSubset ) const override;
...@@ -1510,8 +1519,7 @@ namespace cppcanvas ...@@ -1510,8 +1519,7 @@ namespace cppcanvas
class OutlineAction : class OutlineAction :
public Action, public Action,
public TextRenderer, public TextRenderer
private ::boost::noncopyable
{ {
public: public:
OutlineAction( const ::basegfx::B2DPoint& rStartPoint, OutlineAction( const ::basegfx::B2DPoint& rStartPoint,
...@@ -1538,6 +1546,9 @@ namespace cppcanvas ...@@ -1538,6 +1546,9 @@ namespace cppcanvas
const OutDevState& rState, const OutDevState& rState,
const ::basegfx::B2DHomMatrix& rTextTransform ); const ::basegfx::B2DHomMatrix& rTextTransform );
OutlineAction(const OutlineAction&) = delete;
const OutlineAction& operator=(const OutlineAction&);
virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override; virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override;
virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation, virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation,
const Subset& rSubset ) const override; const Subset& rSubset ) const override;
......
...@@ -48,8 +48,6 @@ ...@@ -48,8 +48,6 @@
#include <basegfx/tools/canvastools.hxx> #include <basegfx/tools/canvastools.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx> #include <basegfx/matrix/b2dhommatrixtools.hxx>
#include <boost/noncopyable.hpp>
#include "transparencygroupaction.hxx" #include "transparencygroupaction.hxx"
#include "outdevstate.hxx" #include "outdevstate.hxx"
#include "mtftools.hxx" #include "mtftools.hxx"
...@@ -66,7 +64,7 @@ namespace cppcanvas ...@@ -66,7 +64,7 @@ namespace cppcanvas
// ====================== // ======================
namespace namespace
{ {
class TransparencyGroupAction : public Action, private ::boost::noncopyable class TransparencyGroupAction : public Action
{ {
public: public:
/** Create new transparency group action. /** Create new transparency group action.
...@@ -94,6 +92,9 @@ namespace cppcanvas ...@@ -94,6 +92,9 @@ namespace cppcanvas
const CanvasSharedPtr& rCanvas, const CanvasSharedPtr& rCanvas,
const OutDevState& rState ); const OutDevState& rState );
TransparencyGroupAction(const TransparencyGroupAction&) = delete;
const TransparencyGroupAction& operator=(const TransparencyGroupAction&) = delete;
virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override; virtual bool render( const ::basegfx::B2DHomMatrix& rTransformation ) const override;
virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation, virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation,
const Subset& rSubset ) const override; const Subset& rSubset ) const override;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment