1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 5 * This Source Code Form is subject to the terms of the Mozilla Public 6 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 * 9 * This file incorporates work covered by the following license notice: 10 * 11 * Licensed to the Apache Software Foundation (ASF) under one or more 12 * contributor license agreements. See the NOTICE file distributed 13 * with this work for additional information regarding copyright 14 * ownership. The ASF licenses this file to you under the Apache 15 * License, Version 2.0 (the "License"); you may not use this file 16 * except in compliance with the License. You may obtain a copy of 17 * the License at http://www.apache.org/licenses/LICENSE-2.0 . 18 */ 19 #ifndef INCLUDED_SVX_OFAITEM_HXX 20 #define INCLUDED_SVX_OFAITEM_HXX 21 22 #include <svl/poolitem.hxx> 23 #include <rtl/ref.hxx> 24 #include <svx/svxdllapi.h> 25 26 class SVX_DLLPUBLIC OfaPtrItem final : public SfxPoolItem 27 { 28 private: 29 void* const pPtr; 30 31 public: 32 OfaPtrItem( sal_uInt16 nWhich, void *pPtr ); 33 34 virtual bool operator==( const SfxPoolItem& ) const override; 35 virtual SfxPoolItem* Clone( SfxItemPool *pPool = nullptr ) const override; 36 GetValue() const37 void* GetValue() const { return pPtr; } 38 }; 39 40 template <class reference_type> 41 class OfaRefItem final : public SfxPoolItem 42 { 43 private: 44 rtl::Reference<reference_type> mxRef; 45 public: OfaRefItem(sal_uInt16 _nWhich,const rtl::Reference<reference_type> & xRef)46 OfaRefItem( sal_uInt16 _nWhich, const rtl::Reference<reference_type> &xRef ) 47 : SfxPoolItem( _nWhich ), mxRef( xRef ) 48 {} operator ==(const SfxPoolItem & rItem) const49 virtual bool operator==( const SfxPoolItem& rItem ) const override 50 { 51 return SfxPoolItem::operator==(rItem) 52 && mxRef == static_cast<OfaRefItem<reference_type> const &>(rItem).mxRef; 53 } Clone(SfxItemPool *) const54 virtual SfxPoolItem* Clone( SfxItemPool* /*pPool = 0*/ ) const override 55 { 56 return new OfaRefItem( *this ); 57 } 58 }; 59 60 #endif 61 62 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 63