Kaydet (Commit) 3f4a63f1 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Revert "abstract type in ptr_container needs this workaround"

d3f063cc, by instead restricting the use of the
Boost pointer containers to non-inline code (watch out for implicitly generated
copy ctors and copy assignment ops), thus preventing MSVC from trying to
generate full template instantiations of those containers (similar to
f4227c82 "Blind fix for MSVC, take two").

Turns out the ScConditionalFormat copy ctor was unused anyway (but the
ScConditionalFormatList copy ctor isn't, so only prevent generation of an
implicit copy assignment op there).

Change-Id: I23303a98df7024dbce95638ac13097b71a9c5c04
üst fb24a49d
......@@ -31,6 +31,7 @@
#include <map>
#include <boost/noncopyable.hpp>
#include <boost/ptr_container/ptr_set.hpp>
#include <boost/ptr_container/ptr_vector.hpp>
#include <boost/scoped_ptr.hpp>
......@@ -367,7 +368,7 @@ private:
// complete conditional formatting
//
class SC_DLLPUBLIC ScConditionalFormat
class SC_DLLPUBLIC ScConditionalFormat: private boost::noncopyable
{
ScDocument* pDoc;
sal_uInt32 nKey; // Index in attributes
......@@ -378,7 +379,6 @@ class SC_DLLPUBLIC ScConditionalFormat
public:
ScConditionalFormat(sal_uInt32 nNewKey, ScDocument* pDocument);
ScConditionalFormat(const ScConditionalFormat& r);
~ScConditionalFormat();
// true copy of formulas (for Ref-Undo / between documents)
......@@ -390,8 +390,8 @@ public:
// don't use the same name as for the const version
ScRangeList& GetRangeList() { return maRanges; }
bool IsEmpty() const { return maEntries.empty(); }
size_t size() const { return maEntries.size(); }
bool IsEmpty() const;
size_t size() const;
void CompileAll();
void CompileXML();
......@@ -434,16 +434,19 @@ public:
class SC_DLLPUBLIC ScConditionalFormatList
{
private:
boost::ptr_set<ScConditionalFormat> maConditionalFormats;
typedef boost::ptr_set<ScConditionalFormat> ConditionalFormatContainer;
ConditionalFormatContainer maConditionalFormats;
void operator =(ScConditionalFormatList const &) SAL_DELETED_FUNCTION;
public:
ScConditionalFormatList() {}
ScConditionalFormatList(const ScConditionalFormatList& rList);
ScConditionalFormatList(ScDocument* pDoc, const ScConditionalFormatList& rList);
~ScConditionalFormatList() {}
void InsertNew( ScConditionalFormat* pNew )
{ maConditionalFormats.insert(pNew); }
void InsertNew( ScConditionalFormat* pNew );
/**
* Checks that all cond formats have a non empty range.
* Deletes empty cond formats.
......@@ -481,13 +484,6 @@ public:
void endRendering();
};
// see http://www.boost.org/doc/libs/1_49_0/libs/ptr_container/doc/tutorial.html#cloneability
//for MSVC we need:
inline ScFormatEntry* new_clone( const ScFormatEntry& rFormat )
{
return rFormat.Clone();
}
#endif
......
......@@ -1829,19 +1829,6 @@ ScConditionalFormat::ScConditionalFormat(sal_uInt32 nNewKey, ScDocument* pDocume
{
}
ScConditionalFormat::ScConditionalFormat(const ScConditionalFormat& r) :
pDoc( r.pDoc ),
nKey( r.nKey ),
maRanges( r.maRanges )
{
for (CondFormatContainer::const_iterator itr = r.maEntries.begin(); itr != r.maEntries.end(); ++itr)
{
ScFormatEntry* pNewEntry = itr->Clone(r.pDoc);
maEntries.push_back( pNewEntry );
pNewEntry->SetParent(this);
}
}
ScConditionalFormat* ScConditionalFormat::Clone(ScDocument* pNewDoc) const
{
// echte Kopie der Formeln (fuer Ref-Undo / zwischen Dokumenten)
......@@ -1890,6 +1877,16 @@ void ScConditionalFormat::AddEntry( ScFormatEntry* pNew )
pNew->SetParent(this);
}
bool ScConditionalFormat::IsEmpty() const
{
return maEntries.empty();
}
size_t ScConditionalFormat::size() const
{
return maEntries.size();
}
ScConditionalFormat::~ScConditionalFormat()
{
}
......@@ -2106,6 +2103,11 @@ ScConditionalFormatList::ScConditionalFormatList(ScDocument* pDoc, const ScCondi
InsertNew( itr->Clone(pDoc) );
}
void ScConditionalFormatList::InsertNew( ScConditionalFormat* pNew )
{
maConditionalFormats.insert(pNew);
}
bool ScConditionalFormatList::operator==( const ScConditionalFormatList& r ) const
{
// fuer Ref-Undo - interne Variablen werden nicht verglichen
......
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