Kaydet (Commit) 14166696 authored tarafından Thomas Arnhold's avatar Thomas Arnhold Kaydeden (comit) Luboš Luňák

Revert "Revert "reduce some uglyness""

The header guard seems to solve the problem.

This reverts commit df8c41cc.

Change-Id: I27869be9c70e79a366a547ce061e71a3743f87da
Reviewed-on: https://gerrit.libreoffice.org/3171Reviewed-by: 's avatarLuboš Luňák <l.lunak@suse.cz>
Tested-by: 's avatarLuboš Luňák <l.lunak@suse.cz>
üst 07f98c44
......@@ -18,20 +18,8 @@
*/
#ifndef _SFXRNGITEM_HXX
#ifndef NUMTYPE
#define NUMTYPE sal_uInt16
#define SfxXRangeItem SfxRangeItem
#define SfxXRangesItem SfxUShortRangesItem
#include <svl/rngitem.hxx>
#undef NUMTYPE
#undef SfxXRangeItem
#undef SfxXRangesItem
#define _SFXRNGITEM_HXX
#else
#include "svl/svldllapi.h"
#include <svl/poolitem.hxx>
......@@ -39,16 +27,16 @@ class SvStream;
// -----------------------------------------------------------------------
class SVL_DLLPUBLIC SfxXRangeItem : public SfxPoolItem
class SVL_DLLPUBLIC SfxRangeItem : public SfxPoolItem
{
private:
NUMTYPE nFrom;
NUMTYPE nTo;
sal_uInt16 nFrom;
sal_uInt16 nTo;
public:
TYPEINFO();
SfxXRangeItem();
SfxXRangeItem( sal_uInt16 nWID, NUMTYPE nFrom, NUMTYPE nTo );
SfxXRangeItem( const SfxXRangeItem& rItem );
SfxRangeItem();
SfxRangeItem( sal_uInt16 nWID, sal_uInt16 nFrom, sal_uInt16 nTo );
SfxRangeItem( const SfxRangeItem& rItem );
virtual int operator==( const SfxPoolItem& ) const;
virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
SfxMapUnit eCoreMetric,
......@@ -56,28 +44,28 @@ public:
OUString &rText,
const IntlWrapper * = 0 ) const;
virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
inline NUMTYPE& From() { return nFrom; }
inline NUMTYPE From() const { return nFrom; }
inline NUMTYPE& To() { return nTo; }
inline NUMTYPE To() const { return nTo; }
inline sal_Bool HasRange() const { return nTo>nFrom; }
inline sal_uInt16& From() { return nFrom; }
inline sal_uInt16 From() const { return nFrom; }
inline sal_uInt16& To() { return nTo; }
inline sal_uInt16 To() const { return nTo; }
inline sal_Bool HasRange() const { return nTo>nFrom; }
virtual SfxPoolItem* Create( SvStream &, sal_uInt16 nVersion ) const;
virtual SvStream& Store( SvStream &, sal_uInt16 nItemVersion ) const;
};
// -----------------------------------------------------------------------
class SVL_DLLPUBLIC SfxXRangesItem : public SfxPoolItem
class SVL_DLLPUBLIC SfxUShortRangesItem : public SfxPoolItem
{
private:
NUMTYPE* _pRanges;
sal_uInt16* _pRanges;
public:
TYPEINFO();
SfxXRangesItem();
SfxXRangesItem( sal_uInt16 nWID, SvStream &rStream );
SfxXRangesItem( const SfxXRangesItem& rItem );
virtual ~SfxXRangesItem();
SfxUShortRangesItem();
SfxUShortRangesItem( sal_uInt16 nWID, SvStream &rStream );
SfxUShortRangesItem( const SfxUShortRangesItem& rItem );
virtual ~SfxUShortRangesItem();
virtual int operator==( const SfxPoolItem& ) const;
virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
SfxMapUnit eCoreMetric,
......@@ -85,12 +73,11 @@ public:
OUString &rText,
const IntlWrapper * = 0 ) const;
virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
inline const NUMTYPE* GetRanges() const { return _pRanges; }
inline const sal_uInt16* GetRanges() const { return _pRanges; }
virtual SfxPoolItem* Create( SvStream &, sal_uInt16 nVersion ) const;
virtual SvStream& Store( SvStream &, sal_uInt16 nItemVersion ) const;
};
#endif
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -18,22 +18,190 @@
*/
#include <tools/stream.hxx>
#include <svl/rngitem.hxx>
#ifndef NUMTYPE
static inline sal_uInt16 Count_Impl(const sal_uInt16 * pRanges)
{
sal_uInt16 nCount = 0;
for (; *pRanges; pRanges += 2) nCount += 2;
return nCount;
}
#define NUMTYPE sal_uInt16
#define SfxXRangeItem SfxRangeItem
#define SfxXRangesItem SfxUShortRangesItem
#include <svl/rngitem.hxx>
#include "rngitem_inc.cxx"
// -----------------------------------------------------------------------
TYPEINIT1_AUTOFACTORY(SfxRangeItem, SfxPoolItem);
TYPEINIT1_AUTOFACTORY(SfxUShortRangesItem, SfxPoolItem);
sal_uInt16 Count_Impl( const sal_uInt16 *pRanges );
// -----------------------------------------------------------------------
SfxRangeItem::SfxRangeItem()
{
nFrom = 0;
nTo = 0;
}
// -----------------------------------------------------------------------
SfxRangeItem::SfxRangeItem( sal_uInt16 which, sal_uInt16 from, sal_uInt16 to ):
SfxPoolItem( which ),
nFrom( from ),
nTo( to )
{
}
// -----------------------------------------------------------------------
SfxRangeItem::SfxRangeItem( const SfxRangeItem& rItem ) :
SfxPoolItem( rItem )
{
nFrom = rItem.nFrom;
nTo = rItem.nTo;
}
// -----------------------------------------------------------------------
SfxItemPresentation SfxRangeItem::GetPresentation
(
SfxItemPresentation /*ePresentation*/,
SfxMapUnit /*eCoreMetric*/,
SfxMapUnit /*ePresentationMetric*/,
OUString& rText,
const IntlWrapper *
) const
{
rText = OUString::number(nFrom) + ":" + OUString::number(nTo);
return SFX_ITEM_PRESENTATION_NAMELESS;
}
// -----------------------------------------------------------------------
int SfxRangeItem::operator==( const SfxPoolItem& rItem ) const
{
DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal type" );
SfxRangeItem* pT = (SfxRangeItem*)&rItem;
if( nFrom==pT->nFrom && nTo==pT->nTo )
return 1;
return 0;
}
// -----------------------------------------------------------------------
SfxPoolItem* SfxRangeItem::Clone(SfxItemPool *) const
{
return new SfxRangeItem( Which(), nFrom, nTo );
}
// -----------------------------------------------------------------------
SfxPoolItem* SfxRangeItem::Create(SvStream &rStream, sal_uInt16) const
{
sal_uInt16 nVon(0), nBis(0);
rStream >> nVon;
rStream >> nBis;
return new SfxRangeItem( Which(), nVon, nBis );
}
// -----------------------------------------------------------------------
SvStream& SfxRangeItem::Store(SvStream &rStream, sal_uInt16) const
{
rStream << nFrom;
rStream << nTo;
return rStream;
}
//=========================================================================
SfxUShortRangesItem::SfxUShortRangesItem()
: _pRanges(0)
{
}
//-------------------------------------------------------------------------
SfxUShortRangesItem::SfxUShortRangesItem( sal_uInt16 nWID, SvStream &rStream )
: SfxPoolItem( nWID )
{
sal_uInt16 nCount(0);
rStream >> nCount;
_pRanges = new sal_uInt16[nCount + 1];
for ( sal_uInt16 n = 0; n < nCount; ++n )
rStream >> _pRanges[n];
_pRanges[nCount] = 0;
}
//-------------------------------------------------------------------------
SfxUShortRangesItem::SfxUShortRangesItem( const SfxUShortRangesItem& rItem )
: SfxPoolItem( rItem )
{
sal_uInt16 nCount = Count_Impl(rItem._pRanges) + 1;
_pRanges = new sal_uInt16[nCount];
memcpy( _pRanges, rItem._pRanges, sizeof(sal_uInt16) * nCount );
}
//-------------------------------------------------------------------------
SfxUShortRangesItem::~SfxUShortRangesItem()
{
delete _pRanges;
}
//-------------------------------------------------------------------------
int SfxUShortRangesItem::operator==( const SfxPoolItem &rItem ) const
{
const SfxUShortRangesItem &rOther = (const SfxUShortRangesItem&) rItem;
if ( !_pRanges && !rOther._pRanges )
return sal_True;
if ( _pRanges || rOther._pRanges )
return sal_False;
sal_uInt16 n;
for ( n = 0; _pRanges[n] && rOther._pRanges[n]; ++n )
if ( *_pRanges != rOther._pRanges[n] )
return 0;
return !_pRanges[n] && !rOther._pRanges[n];
}
//-------------------------------------------------------------------------
SfxItemPresentation SfxUShortRangesItem::GetPresentation( SfxItemPresentation /*ePres*/,
SfxMapUnit /*eCoreMetric*/,
SfxMapUnit /*ePresMetric*/,
OUString & /*rText*/,
const IntlWrapper * ) const
{
// not implemented
return SFX_ITEM_PRESENTATION_NONE;
}
//-------------------------------------------------------------------------
SfxPoolItem* SfxUShortRangesItem::Clone( SfxItemPool * ) const
{
return new SfxUShortRangesItem( *this );
}
#else
//-------------------------------------------------------------------------
// We leave this condition just in case NUMTYPE has been defined externally to this
// file and we are supposed to define the SfxXRangeItem based on that.
SfxPoolItem* SfxUShortRangesItem::Create( SvStream &rStream, sal_uInt16 ) const
{
return new SfxUShortRangesItem( Which(), rStream );
}
#include "rngitem_inc.cxx"
//-------------------------------------------------------------------------
#endif
SvStream& SfxUShortRangesItem::Store( SvStream &rStream, sal_uInt16 ) const
{
sal_uInt16 nCount = Count_Impl( _pRanges );
rStream >> nCount;
for ( sal_uInt16 n = 0; _pRanges[n]; ++n )
rStream >> _pRanges[n];
return rStream;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
// This snippet of code is included by rngitem.cxx but not compiled directly.
// Ugly hack, probably due to lack of templates in the 20th century.
static inline NUMTYPE Count_Impl(const NUMTYPE * pRanges)
{
NUMTYPE nCount = 0;
for (; *pRanges; pRanges += 2) nCount += 2;
return nCount;
}
// -----------------------------------------------------------------------
TYPEINIT1_AUTOFACTORY(SfxXRangeItem, SfxPoolItem);
TYPEINIT1_AUTOFACTORY(SfxXRangesItem, SfxPoolItem);
NUMTYPE Count_Impl( const NUMTYPE *pRanges );
// -----------------------------------------------------------------------
SfxXRangeItem::SfxXRangeItem()
{
nFrom = 0;
nTo = 0;
}
// -----------------------------------------------------------------------
SfxXRangeItem::SfxXRangeItem( sal_uInt16 which, NUMTYPE from, NUMTYPE to ):
SfxPoolItem( which ),
nFrom( from ),
nTo( to )
{
}
// -----------------------------------------------------------------------
SfxXRangeItem::SfxXRangeItem( const SfxXRangeItem& rItem ) :
SfxPoolItem( rItem )
{
nFrom = rItem.nFrom;
nTo = rItem.nTo;
}
// -----------------------------------------------------------------------
SfxItemPresentation SfxXRangeItem::GetPresentation
(
SfxItemPresentation /*ePresentation*/,
SfxMapUnit /*eCoreMetric*/,
SfxMapUnit /*ePresentationMetric*/,
OUString& rText,
const IntlWrapper *
) const
{
rText = OUString::number(nFrom) + ":" + OUString::number(nTo);
return SFX_ITEM_PRESENTATION_NAMELESS;
}
// -----------------------------------------------------------------------
int SfxXRangeItem::operator==( const SfxPoolItem& rItem ) const
{
DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal type" );
SfxXRangeItem* pT = (SfxXRangeItem*)&rItem;
if( nFrom==pT->nFrom && nTo==pT->nTo )
return 1;
return 0;
}
// -----------------------------------------------------------------------
SfxPoolItem* SfxXRangeItem::Clone(SfxItemPool *) const
{
return new SfxXRangeItem( Which(), nFrom, nTo );
}
// -----------------------------------------------------------------------
SfxPoolItem* SfxXRangeItem::Create(SvStream &rStream, sal_uInt16) const
{
NUMTYPE nVon(0), nBis(0);
rStream >> nVon;
rStream >> nBis;
return new SfxXRangeItem( Which(), nVon, nBis );
}
// -----------------------------------------------------------------------
SvStream& SfxXRangeItem::Store(SvStream &rStream, sal_uInt16) const
{
rStream << nFrom;
rStream << nTo;
return rStream;
}
//=========================================================================
SfxXRangesItem::SfxXRangesItem()
: _pRanges(0)
{
}
//-------------------------------------------------------------------------
SfxXRangesItem::SfxXRangesItem( sal_uInt16 nWID, SvStream &rStream )
: SfxPoolItem( nWID )
{
NUMTYPE nCount(0);
rStream >> nCount;
_pRanges = new NUMTYPE[nCount + 1];
for ( NUMTYPE n = 0; n < nCount; ++n )
rStream >> _pRanges[n];
_pRanges[nCount] = 0;
}
//-------------------------------------------------------------------------
SfxXRangesItem::SfxXRangesItem( const SfxXRangesItem& rItem )
: SfxPoolItem( rItem )
{
NUMTYPE nCount = Count_Impl(rItem._pRanges) + 1;
_pRanges = new NUMTYPE[nCount];
memcpy( _pRanges, rItem._pRanges, sizeof(NUMTYPE) * nCount );
}
//-------------------------------------------------------------------------
SfxXRangesItem::~SfxXRangesItem()
{
delete _pRanges;
}
//-------------------------------------------------------------------------
int SfxXRangesItem::operator==( const SfxPoolItem &rItem ) const
{
const SfxXRangesItem &rOther = (const SfxXRangesItem&) rItem;
if ( !_pRanges && !rOther._pRanges )
return sal_True;
if ( _pRanges || rOther._pRanges )
return sal_False;
NUMTYPE n;
for ( n = 0; _pRanges[n] && rOther._pRanges[n]; ++n )
if ( *_pRanges != rOther._pRanges[n] )
return 0;
return !_pRanges[n] && !rOther._pRanges[n];
}
//-------------------------------------------------------------------------
SfxItemPresentation SfxXRangesItem::GetPresentation( SfxItemPresentation /*ePres*/,
SfxMapUnit /*eCoreMetric*/,
SfxMapUnit /*ePresMetric*/,
OUString & /*rText*/,
const IntlWrapper * ) const
{
// not implemented
return SFX_ITEM_PRESENTATION_NONE;
}
//-------------------------------------------------------------------------
SfxPoolItem* SfxXRangesItem::Clone( SfxItemPool * ) const
{
return new SfxXRangesItem( *this );
}
//-------------------------------------------------------------------------
SfxPoolItem* SfxXRangesItem::Create( SvStream &rStream, sal_uInt16 ) const
{
return new SfxXRangesItem( Which(), rStream );
}
//-------------------------------------------------------------------------
SvStream& SfxXRangesItem::Store( SvStream &rStream, sal_uInt16 ) const
{
NUMTYPE nCount = Count_Impl( _pRanges );
rStream >> nCount;
for ( NUMTYPE n = 0; _pRanges[n]; ++n )
rStream >> _pRanges[n];
return rStream;
}
#undef NUMTYPE
#undef SfxXRangeItem
#undef SfxXRangesItem
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
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