[Libreoffice-commits] core.git: 4 commits - store/source
Stephan Bergmann
sbergman at redhat.com
Fri Sep 30 09:10:48 UTC 2016
store/source/lockbyte.cxx | 35 ++++-----
store/source/lockbyte.hxx | 12 ++-
store/source/storbase.cxx | 33 --------
store/source/storbase.hxx | 176 ++++++----------------------------------------
store/source/storcach.cxx | 17 ++--
store/source/storcach.hxx | 10 +-
store/source/stordata.hxx | 20 ++---
store/source/stortree.cxx | 14 ++-
store/source/stortree.hxx | 10 +-
9 files changed, 92 insertions(+), 235 deletions(-)
New commits:
commit 98323f936ba454f974d168e79f2187a8d3324ef0
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Sep 30 11:04:13 2016 +0200
cid#1371195, cide#1371212: Replace PageHolder with shared_ptr
...removing the need for SharedCount, too
Change-Id: I20c724c940c571aef1c12453da30c3e9fbb46466
diff --git a/store/source/lockbyte.cxx b/store/source/lockbyte.cxx
index 73ad47f..b0b2b52 100644
--- a/store/source/lockbyte.cxx
+++ b/store/source/lockbyte.cxx
@@ -30,6 +30,7 @@
#include "object.hxx"
#include "storbase.hxx"
+#include <memory>
#include <string.h>
using namespace store;
@@ -46,7 +47,7 @@ storeError ILockBytes::initialize (rtl::Reference< PageData::Allocator > & rxAll
return initialize_Impl (rxAllocator, nPageSize);
}
-storeError ILockBytes::readPageAt (PageHolder & rPage, sal_uInt32 nOffset)
+storeError ILockBytes::readPageAt (std::shared_ptr<PageData> & rPage, sal_uInt32 nOffset)
{
OSL_PRECOND(!(nOffset == STORE_PAGE_NULL), "store::ILockBytes::readPageAt(): invalid Offset");
if (nOffset == STORE_PAGE_NULL)
@@ -55,7 +56,7 @@ storeError ILockBytes::readPageAt (PageHolder & rPage, sal_uInt32 nOffset)
return readPageAt_Impl (rPage, nOffset);
}
-storeError ILockBytes::writePageAt (PageHolder const & rPage, sal_uInt32 nOffset)
+storeError ILockBytes::writePageAt (std::shared_ptr<PageData> const & rPage, sal_uInt32 nOffset)
{
// [SECURITY:ValInput]
PageData const * pagedata = rPage.get();
@@ -291,8 +292,8 @@ class FileLockBytes :
*/
virtual storeError initialize_Impl (rtl::Reference< PageData::Allocator > & rxAllocator, sal_uInt16 nPageSize) override;
- virtual storeError readPageAt_Impl (PageHolder & rPage, sal_uInt32 nOffset) override;
- virtual storeError writePageAt_Impl (PageHolder const & rPage, sal_uInt32 nOffset) override;
+ virtual storeError readPageAt_Impl (std::shared_ptr<PageData> & rPage, sal_uInt32 nOffset) override;
+ virtual storeError writePageAt_Impl (std::shared_ptr<PageData> const & rPage, sal_uInt32 nOffset) override;
virtual storeError readAt_Impl (sal_uInt32 nOffset, void * pBuffer, sal_uInt32 nBytes) override;
virtual storeError writeAt_Impl (sal_uInt32 nOffset, void const * pBuffer, sal_uInt32 nBytes) override;
@@ -360,11 +361,11 @@ storeError FileLockBytes::initialize_Impl (rtl::Reference< PageData::Allocator >
return store_E_None;
}
-storeError FileLockBytes::readPageAt_Impl (PageHolder & rPage, sal_uInt32 nOffset)
+storeError FileLockBytes::readPageAt_Impl (std::shared_ptr<PageData> & rPage, sal_uInt32 nOffset)
{
if (m_xAllocator.is())
{
- PageHolder page (m_xAllocator->construct<PageData>(), m_xAllocator);
+ std::shared_ptr<PageData> page (m_xAllocator->construct<PageData>(), PageData::Deallocate(m_xAllocator));
page.swap (rPage);
}
@@ -377,7 +378,7 @@ storeError FileLockBytes::readPageAt_Impl (PageHolder & rPage, sal_uInt32 nOffse
return readAt_Impl (nOffset, pagedata, pagedata->size());
}
-storeError FileLockBytes::writePageAt_Impl (PageHolder const & rPage, sal_uInt32 nOffset)
+storeError FileLockBytes::writePageAt_Impl (std::shared_ptr<PageData> const & rPage, sal_uInt32 nOffset)
{
PageData const * pagedata = rPage.get();
OSL_PRECOND(pagedata != nullptr, "contract violation");
@@ -519,8 +520,8 @@ class MappedLockBytes :
*/
virtual storeError initialize_Impl (rtl::Reference< PageData::Allocator > & rxAllocator, sal_uInt16 nPageSize) override;
- virtual storeError readPageAt_Impl (PageHolder & rPage, sal_uInt32 nOffset) override;
- virtual storeError writePageAt_Impl (PageHolder const & rPage, sal_uInt32 nOffset) override;
+ virtual storeError readPageAt_Impl (std::shared_ptr<PageData> & rPage, sal_uInt32 nOffset) override;
+ virtual storeError writePageAt_Impl (std::shared_ptr<PageData> const & rPage, sal_uInt32 nOffset) override;
virtual storeError readAt_Impl (sal_uInt32 nOffset, void * pBuffer, sal_uInt32 nBytes) override;
virtual storeError writeAt_Impl (sal_uInt32 nOffset, const void * pBuffer, sal_uInt32 nBytes) override;
@@ -579,7 +580,7 @@ storeError MappedLockBytes::initialize_Impl (rtl::Reference< PageData::Allocator
return store_E_None;
}
-storeError MappedLockBytes::readPageAt_Impl (PageHolder & rPage, sal_uInt32 nOffset)
+storeError MappedLockBytes::readPageAt_Impl (std::shared_ptr<PageData> & rPage, sal_uInt32 nOffset)
{
sal_uInt8 * src_lo = m_pData + nOffset;
if ((m_pData > src_lo) || (src_lo >= m_pData + m_nSize))
@@ -589,13 +590,13 @@ storeError MappedLockBytes::readPageAt_Impl (PageHolder & rPage, sal_uInt32 nOff
if ((m_pData > src_hi) || (src_hi > m_pData + m_nSize))
return store_E_CantRead;
- PageHolder page (reinterpret_cast< PageData* >(src_lo), static_cast< PageData::Allocator* >(this));
+ std::shared_ptr<PageData> page (reinterpret_cast< PageData* >(src_lo), PageData::Deallocate(static_cast< PageData::Allocator* >(this)));
page.swap (rPage);
return store_E_None;
}
-storeError MappedLockBytes::writePageAt_Impl (PageHolder const & /*rPage*/, sal_uInt32 /*nOffset*/)
+storeError MappedLockBytes::writePageAt_Impl (std::shared_ptr<PageData> const & /*rPage*/, sal_uInt32 /*nOffset*/)
{
return store_E_AccessViolation;
}
@@ -657,8 +658,8 @@ class MemoryLockBytes :
*/
virtual storeError initialize_Impl (rtl::Reference< PageData::Allocator > & rxAllocator, sal_uInt16 nPageSize) override;
- virtual storeError readPageAt_Impl (PageHolder & rPage, sal_uInt32 nOffset) override;
- virtual storeError writePageAt_Impl (PageHolder const & rPage, sal_uInt32 nOffset) override;
+ virtual storeError readPageAt_Impl (std::shared_ptr<PageData> & rPage, sal_uInt32 nOffset) override;
+ virtual storeError writePageAt_Impl (std::shared_ptr<PageData> const & rPage, sal_uInt32 nOffset) override;
virtual storeError readAt_Impl (sal_uInt32 nOffset, void * pBuffer, sal_uInt32 nBytes) override;
virtual storeError writeAt_Impl (sal_uInt32 nOffset, const void * pBuffer, sal_uInt32 nBytes) override;
@@ -704,11 +705,11 @@ storeError MemoryLockBytes::initialize_Impl (rtl::Reference< PageData::Allocator
return result;
}
-storeError MemoryLockBytes::readPageAt_Impl (PageHolder & rPage, sal_uInt32 nOffset)
+storeError MemoryLockBytes::readPageAt_Impl (std::shared_ptr<PageData> & rPage, sal_uInt32 nOffset)
{
if (m_xAllocator.is())
{
- PageHolder page (m_xAllocator->construct<PageData>(), m_xAllocator);
+ std::shared_ptr<PageData> page (m_xAllocator->construct<PageData>(), PageData::Deallocate(m_xAllocator));
page.swap (rPage);
}
@@ -721,7 +722,7 @@ storeError MemoryLockBytes::readPageAt_Impl (PageHolder & rPage, sal_uInt32 nOff
return readAt_Impl (nOffset, pagedata, pagedata->size());
}
-storeError MemoryLockBytes::writePageAt_Impl (PageHolder const & rPage, sal_uInt32 nOffset)
+storeError MemoryLockBytes::writePageAt_Impl (std::shared_ptr<PageData> const & rPage, sal_uInt32 nOffset)
{
PageData const * pagedata = rPage.get();
OSL_PRECOND(!(pagedata == nullptr), "contract violation");
diff --git a/store/source/lockbyte.hxx b/store/source/lockbyte.hxx
index 1a864ad..b92e8b47 100644
--- a/store/source/lockbyte.hxx
+++ b/store/source/lockbyte.hxx
@@ -20,6 +20,10 @@
#ifndef INCLUDED_STORE_SOURCE_LOCKBYTE_HXX
#define INCLUDED_STORE_SOURCE_LOCKBYTE_HXX
+#include <sal/config.h>
+
+#include <memory>
+
#include "sal/types.h"
#include "rtl/ref.hxx"
@@ -53,7 +57,7 @@ public:
@param nOffset [in]
*/
storeError readPageAt (
- PageHolder & rPage,
+ std::shared_ptr<PageData> & rPage,
sal_uInt32 nOffset);
/**
@@ -61,7 +65,7 @@ public:
@param nOffset [in]
*/
storeError writePageAt (
- PageHolder const & rPage,
+ std::shared_ptr<PageData> const & rPage,
sal_uInt32 nOffset);
/**
@@ -114,11 +118,11 @@ private:
sal_uInt16 nPageSize) = 0;
virtual storeError readPageAt_Impl (
- PageHolder & rPage,
+ std::shared_ptr<PageData> & rPage,
sal_uInt32 nOffset) = 0;
virtual storeError writePageAt_Impl (
- PageHolder const & rPage,
+ std::shared_ptr<PageData> const & rPage,
sal_uInt32 nOffset) = 0;
virtual storeError readAt_Impl (
diff --git a/store/source/storbase.hxx b/store/source/storbase.hxx
index 49ff131..0b16fae 100644
--- a/store/source/storbase.hxx
+++ b/store/source/storbase.hxx
@@ -34,6 +34,7 @@
#include "store/types.h"
+#include <memory>
#include <stddef.h>
#include <string.h>
#include <utility>
@@ -77,52 +78,6 @@ inline sal_uInt32 ntohl (sal_uInt32 n) { return n; }
/*========================================================================
*
- * SharedCount.
- *
- *======================================================================*/
-class SharedCount
-{
- long * m_pCount;
-
-public:
- SharedCount()
- : m_pCount(new long)
- {
- (*m_pCount) = 1;
- }
-
- ~SharedCount()
- {
- long new_count = --(*m_pCount);
- if (new_count == 0)
- delete m_pCount;
- }
-
- void swap (SharedCount & rhs) // nothrow
- {
- std::swap(m_pCount, rhs.m_pCount);
- }
-
- SharedCount (SharedCount const & rhs) // nothrow
- : m_pCount (rhs.m_pCount)
- {
- ++(*m_pCount);
- }
- SharedCount & operator= (SharedCount const & rhs) // nothrow
- {
- SharedCount tmp(rhs);
- swap(tmp);
- return *this;
- }
-
- bool operator== (long count) const
- {
- return *m_pCount == count;
- }
-};
-
-/*========================================================================
- *
* OStorePageGuard.
*
*======================================================================*/
@@ -416,6 +371,17 @@ struct PageData
virtual void deallocate_Impl (void * pPage) = 0;
};
+ class Deallocate {
+ public:
+ explicit Deallocate(rtl::Reference<Allocator> const & allocator):
+ allocator_(allocator) {};
+
+ void operator ()(void * page) const { allocator_->deallocate(page); }
+
+ private:
+ rtl::Reference<Allocator> allocator_;
+ };
+
static void* operator new (size_t, void * p) { return p; }
static void operator delete (void * , void *) {}
@@ -479,73 +445,6 @@ struct PageData
/*========================================================================
*
- * PageHolder.
- *
- *======================================================================*/
-class PageHolder
-{
- SharedCount m_refcount;
- PageData * m_pagedata;
-
- typedef rtl::Reference< PageData::Allocator > allocator_type;
- allocator_type m_allocator;
-
-public:
- explicit PageHolder (PageData * pagedata = nullptr, allocator_type const & allocator = allocator_type())
- : m_refcount (),
- m_pagedata (pagedata),
- m_allocator(allocator)
- {
- OSL_ENSURE((m_pagedata == nullptr) || m_allocator.is(), "store::PageHolder::ctor(): pagedata w/o allocator.");
- }
-
- ~PageHolder()
- {
- if ((m_refcount == 1) && (m_pagedata != nullptr))
- {
- // free pagedata.
- OSL_ENSURE(m_allocator.is(), "store::PageHolder::dtor(): pagedata w/o allocator.");
- m_allocator->deallocate (m_pagedata);
- }
- }
-
- void swap (PageHolder & rhs) // nothrow
- {
- m_refcount.swap(rhs.m_refcount);
- std::swap(m_pagedata, rhs.m_pagedata);
- std::swap(m_allocator, rhs.m_allocator);
- }
-
- PageHolder (PageHolder const & rhs) // nothrow
- : m_refcount (rhs.m_refcount),
- m_pagedata (rhs.m_pagedata),
- m_allocator(rhs.m_allocator)
- {}
-
- PageHolder & operator= (PageHolder const & rhs) // nothrow
- {
- PageHolder tmp (rhs);
- swap(tmp);
- return *this;
- }
-
- PageData * get() { return m_pagedata; }
- PageData const * get() const { return m_pagedata; }
-
- PageData * operator->()
- {
- OSL_PRECOND(m_pagedata != nullptr, "store::PageHolder::operator->(): Null pointer");
- return m_pagedata;
- }
- PageData const * operator->() const
- {
- OSL_PRECOND(m_pagedata != nullptr, "store::PageHolder::operator->(): Null pointer");
- return m_pagedata;
- }
-};
-
-/*========================================================================
- *
* PageHolderObject.
*
*======================================================================*/
@@ -554,7 +453,7 @@ class PageHolderObject
{
/** Representation.
*/
- PageHolder m_xPage;
+ std::shared_ptr<PageData> m_xPage;
/** Checked cast.
*/
@@ -581,13 +480,13 @@ public:
{
if ((m_xPage.get() == 0) && rxAllocator.is())
{
- PageHolder tmp (rxAllocator->construct<T>(), rxAllocator);
+ std::shared_ptr<PageData> tmp (rxAllocator->construct<T>(), PageData::Deallocate(rxAllocator));
m_xPage.swap (tmp);
}
return (m_xPage.get() != 0);
}
- explicit PageHolderObject (PageHolder const & rxPage = PageHolder())
+ explicit PageHolderObject (std::shared_ptr<PageData> const & rxPage = std::shared_ptr<PageData>())
: m_xPage (rxPage)
{}
@@ -612,8 +511,8 @@ public:
return (m_xPage.get() != 0);
}
- PageHolder & get() { return m_xPage; }
- PageHolder const & get() const { return m_xPage; }
+ std::shared_ptr<PageData> & get() { return m_xPage; }
+ std::shared_ptr<PageData> const & get() const { return m_xPage; }
T * operator->()
{
@@ -641,7 +540,7 @@ public:
return (*pImpl);
}
- static storeError guard (PageHolder & rxPage, sal_uInt32 nAddr)
+ static storeError guard (std::shared_ptr<PageData> & rxPage, sal_uInt32 nAddr)
{
PageData * pHead = rxPage.get();
if (!pHead)
@@ -654,7 +553,7 @@ public:
return store_E_None;
}
- static storeError verify (PageHolder const & rxPage, sal_uInt32 nAddr)
+ static storeError verify (std::shared_ptr<PageData> const & rxPage, sal_uInt32 nAddr)
{
PageData const * pHead = rxPage.get();
if (!pHead)
@@ -704,12 +603,12 @@ public:
protected:
/** Representation.
*/
- PageHolder m_xPage;
+ std::shared_ptr<PageData> m_xPage;
bool m_bDirty;
/** Construction.
*/
- explicit OStorePageObject (PageHolder const & rxPage = PageHolder())
+ explicit OStorePageObject (std::shared_ptr<PageData> const & rxPage = std::shared_ptr<PageData>())
: m_xPage (rxPage), m_bDirty (false)
{}
@@ -730,7 +629,7 @@ public:
if (!rxAllocator.is())
return store_E_InvalidAccess;
- PageHolder tmp (rxAllocator->construct<U>(), rxAllocator);
+ std::shared_ptr<PageData> tmp (rxAllocator->construct<U>(), PageData::Deallocate(rxAllocator));
if (!tmp.get())
return store_E_OutOfMemory;
@@ -738,7 +637,7 @@ public:
return store_E_None;
}
- PageHolder & get() { return m_xPage; }
+ std::shared_ptr<PageData> & get() { return m_xPage; }
virtual storeError guard (sal_uInt32 nAddr) = 0;
virtual storeError verify (sal_uInt32 nAddr) const = 0;
diff --git a/store/source/storcach.cxx b/store/source/storcach.cxx
index a37a017..8825d69 100644
--- a/store/source/storcach.cxx
+++ b/store/source/storcach.cxx
@@ -31,6 +31,7 @@
#include "object.hxx"
#include "storbase.hxx"
+#include <memory>
#include <stddef.h>
using namespace store;
@@ -41,7 +42,7 @@ namespace store {
struct Entry
{
// Representation
- PageHolder m_xPage;
+ std::shared_ptr<PageData> m_xPage;
sal_uInt32 m_nOffset;
Entry * m_pNext;
@@ -50,7 +51,7 @@ struct Entry
static void operator delete (void *, void *) {}
// Construction
- explicit Entry (PageHolder const & rxPage = PageHolder(), sal_uInt32 nOffset = STORE_PAGE_NULL)
+ explicit Entry (std::shared_ptr<PageData> const & rxPage = std::shared_ptr<PageData>(), sal_uInt32 nOffset = STORE_PAGE_NULL)
: m_xPage(rxPage), m_nOffset(nOffset), m_pNext(nullptr)
{}
@@ -70,7 +71,7 @@ class EntryCache
public:
static EntryCache & get();
- Entry * create (PageHolder const & rxPage, sal_uInt32 nOffset);
+ Entry * create (std::shared_ptr<PageData> const & rxPage, sal_uInt32 nOffset);
void destroy (Entry * entry);
@@ -109,7 +110,7 @@ EntryCache::~EntryCache()
m_entry_cache = nullptr;
}
-Entry * EntryCache::create (PageHolder const & rxPage, sal_uInt32 nOffset)
+Entry * EntryCache::create (std::shared_ptr<PageData> const & rxPage, sal_uInt32 nOffset)
{
void * pAddr = rtl_cache_alloc (m_entry_cache);
if (pAddr != nullptr)
@@ -285,7 +286,7 @@ Entry * PageCache::lookup_Impl (Entry * entry, sal_uInt32 nOffset)
return entry;
}
-storeError PageCache::lookupPageAt (PageHolder & rxPage, sal_uInt32 nOffset)
+storeError PageCache::lookupPageAt (std::shared_ptr<PageData> & rxPage, sal_uInt32 nOffset)
{
OSL_PRECOND(!(nOffset == STORE_PAGE_NULL), "store::PageCache::lookupPageAt(): invalid Offset");
if (nOffset == STORE_PAGE_NULL)
@@ -308,7 +309,7 @@ storeError PageCache::lookupPageAt (PageHolder & rxPage, sal_uInt32 nOffset)
return store_E_NotExists;
}
-storeError PageCache::insertPageAt (PageHolder const & rxPage, sal_uInt32 nOffset)
+storeError PageCache::insertPageAt (std::shared_ptr<PageData> const & rxPage, sal_uInt32 nOffset)
{
// [SECURITY:ValInput]
PageData const * pagedata = rxPage.get();
@@ -340,7 +341,7 @@ storeError PageCache::insertPageAt (PageHolder const & rxPage, sal_uInt32 nOffse
return store_E_OutOfMemory;
}
-storeError PageCache::updatePageAt (PageHolder const & rxPage, sal_uInt32 nOffset)
+storeError PageCache::updatePageAt (std::shared_ptr<PageData> const & rxPage, sal_uInt32 nOffset)
{
// [SECURITY:ValInput]
PageData const * pagedata = rxPage.get();
diff --git a/store/source/storcach.hxx b/store/source/storcach.hxx
index 5125160..3f78172 100644
--- a/store/source/storcach.hxx
+++ b/store/source/storcach.hxx
@@ -20,6 +20,10 @@
#ifndef INCLUDED_STORE_SOURCE_STORCACH_HXX
#define INCLUDED_STORE_SOURCE_STORCACH_HXX
+#include <sal/config.h>
+
+#include <memory>
+
#include "sal/types.h"
#include "rtl/ref.hxx"
@@ -77,19 +81,19 @@ public:
/** load.
*/
storeError lookupPageAt (
- PageHolder & rxPage,
+ std::shared_ptr<PageData> & rxPage,
sal_uInt32 nOffset);
/** insert.
*/
storeError insertPageAt (
- PageHolder const & rxPage,
+ std::shared_ptr<PageData> const & rxPage,
sal_uInt32 nOffset);
/** update, or insert.
*/
storeError updatePageAt (
- PageHolder const & rxPage,
+ std::shared_ptr<PageData> const & rxPage,
sal_uInt32 nOffset);
/** remove (invalidate).
diff --git a/store/source/stordata.hxx b/store/source/stordata.hxx
index 2c3a28b..02bddf0 100644
--- a/store/source/stordata.hxx
+++ b/store/source/stordata.hxx
@@ -22,6 +22,8 @@
#include "sal/config.h"
+#include <memory>
+
#include "sal/types.h"
#include "sal/macros.h"
#include "rtl/string.h"
@@ -106,7 +108,7 @@ class OStoreDataPageObject : public store::OStorePageObject
public:
/** Construction.
*/
- explicit OStoreDataPageObject (PageHolder const & rxPage = PageHolder())
+ explicit OStoreDataPageObject (std::shared_ptr<PageData> const & rxPage = std::shared_ptr<PageData>())
: OStorePageObject (rxPage)
{}
@@ -216,7 +218,7 @@ class OStoreIndirectionPageObject : public store::OStorePageObject
public:
/** Construction.
*/
- explicit OStoreIndirectionPageObject (PageHolder const & rxPage = PageHolder())
+ explicit OStoreIndirectionPageObject (std::shared_ptr<PageData> const & rxPage = std::shared_ptr<PageData>())
: OStorePageObject (rxPage)
{}
@@ -641,7 +643,7 @@ class OStoreDirectoryPageObject : public store::OStorePageObject
public:
/** Construction.
*/
- explicit OStoreDirectoryPageObject (PageHolder const & rxPage = PageHolder())
+ explicit OStoreDirectoryPageObject (std::shared_ptr<PageData> const & rxPage = std::shared_ptr<PageData>())
: OStorePageObject (rxPage)
{}
diff --git a/store/source/stortree.cxx b/store/source/stortree.cxx
index fec3138..1b5e227 100644
--- a/store/source/stortree.cxx
+++ b/store/source/stortree.cxx
@@ -17,6 +17,10 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <sal/config.h>
+
+#include <memory>
+
#include "stortree.hxx"
#include "sal/types.h"
@@ -358,7 +362,7 @@ storeError OStoreBTreeRootObject::change (
// Change root.
rxPageL.swap (xPage);
{
- PageHolder tmp (xPage.get());
+ std::shared_ptr<PageData> tmp (xPage.get());
tmp.swap (m_xPage);
}
@@ -381,7 +385,7 @@ storeError OStoreBTreeRootObject::find_lookup (
// Init node w/ root page.
testInvariant("OStoreBTreeRootObject::find_lookup(): enter");
{
- PageHolder tmp (m_xPage);
+ std::shared_ptr<PageData> tmp (m_xPage);
tmp.swap (rNode.get());
}
@@ -466,7 +470,7 @@ storeError OStoreBTreeRootObject::find_insert (
// Init node w/ root page.
{
- PageHolder tmp (m_xPage);
+ std::shared_ptr<PageData> tmp (m_xPage);
tmp.swap (rNode.get());
}
@@ -515,7 +519,7 @@ storeError OStoreBTreeRootObject::find_insert (
}
// Let next page be current.
- PageHolder tmp (aNext.get());
+ std::shared_ptr<PageData> tmp (aNext.get());
tmp.swap (rNode.get());
}
diff --git a/store/source/stortree.hxx b/store/source/stortree.hxx
index f5aea52..114377a 100644
--- a/store/source/stortree.hxx
+++ b/store/source/stortree.hxx
@@ -22,6 +22,8 @@
#include "sal/config.h"
+#include <memory>
+
#include "sal/types.h"
#include "store/types.h"
@@ -232,7 +234,7 @@ class OStoreBTreeNodeObject : public store::OStorePageObject
public:
/** Construction.
*/
- explicit OStoreBTreeNodeObject (PageHolder const & rxPage = PageHolder())
+ explicit OStoreBTreeNodeObject (std::shared_ptr<PageData> const & rxPage = std::shared_ptr<PageData>())
: OStorePageObject (rxPage)
{}
@@ -273,7 +275,7 @@ class OStoreBTreeRootObject : public store::OStoreBTreeNodeObject
public:
/** Construction.
*/
- explicit OStoreBTreeRootObject (PageHolder const & rxPage = PageHolder())
+ explicit OStoreBTreeRootObject (std::shared_ptr<PageData> const & rxPage = std::shared_ptr<PageData>())
: OStoreBTreeNodeObject (rxPage)
{}
commit 904959b85853be0a79c757f9df92e1a9b7e0c01c
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Sep 30 10:38:20 2016 +0200
Remove OStorePageData typedef
Change-Id: I9f4e8fa41a59325fe7036acb66d045a833294bd6
diff --git a/store/source/storbase.hxx b/store/source/storbase.hxx
index 7d006c6..49ff131 100644
--- a/store/source/storbase.hxx
+++ b/store/source/storbase.hxx
@@ -331,7 +331,6 @@ struct OStorePageLink
* PageData.
*
*======================================================================*/
-typedef struct PageData OStorePageData; // backward compat.
struct PageData
{
typedef OStorePageGuard G;
@@ -678,7 +677,7 @@ class OStorePageBIOS;
class OStorePageObject
{
- typedef OStorePageData page;
+ typedef PageData page;
public:
/** Allocation.
diff --git a/store/source/storcach.cxx b/store/source/storcach.cxx
index d8449be..a37a017 100644
--- a/store/source/storcach.cxx
+++ b/store/source/storcach.cxx
@@ -403,7 +403,7 @@ storeError PageCache::removePageAt (sal_uInt32 nOffset)
* Old OStorePageCache implementation.
*
* (two-way association (sorted address array, LRU chain)).
- * (external OStorePageData representation).
+ * (external PageData representation).
*
*/
diff --git a/store/source/stordata.hxx b/store/source/stordata.hxx
index c9946c2..2c3a28b 100644
--- a/store/source/stordata.hxx
+++ b/store/source/stordata.hxx
@@ -39,9 +39,9 @@ namespace store
*======================================================================*/
#define STORE_MAGIC_DATAPAGE sal_uInt32(0x94190310)
-struct OStoreDataPageData : public store::OStorePageData
+struct OStoreDataPageData : public store::PageData
{
- typedef OStorePageData base;
+ typedef PageData base;
typedef OStoreDataPageData self;
typedef OStorePageDescriptor D;
@@ -123,9 +123,9 @@ public:
*======================================================================*/
#define STORE_MAGIC_INDIRECTPAGE sal_uInt32(0x89191107)
-struct OStoreIndirectionPageData : public store::OStorePageData
+struct OStoreIndirectionPageData : public store::PageData
{
- typedef OStorePageData base;
+ typedef PageData base;
typedef OStoreIndirectionPageData self;
typedef OStorePageGuard G;
@@ -519,9 +519,9 @@ struct OStoreDirectoryDataBlock
*======================================================================*/
#define STORE_MAGIC_DIRECTORYPAGE sal_uInt32(0x62190120)
-struct OStoreDirectoryPageData : public store::OStorePageData
+struct OStoreDirectoryPageData : public store::PageData
{
- typedef OStorePageData base;
+ typedef PageData base;
typedef OStoreDirectoryPageData self;
typedef OStorePageDescriptor D;
diff --git a/store/source/stortree.cxx b/store/source/stortree.cxx
index d8d6d02..fec3138 100644
--- a/store/source/stortree.cxx
+++ b/store/source/stortree.cxx
@@ -39,7 +39,7 @@ using namespace store;
* OStoreBTreeNodeData.
*/
OStoreBTreeNodeData::OStoreBTreeNodeData (sal_uInt16 nPageSize)
- : OStorePageData (nPageSize)
+ : PageData (nPageSize)
{
base::m_aGuard.m_nMagic = store::htonl(self::theTypeId);
base::m_aDescr.m_nUsed = store::htons(self::thePageSize); // usageCount(0)
diff --git a/store/source/stortree.hxx b/store/source/stortree.hxx
index 1146859..f5aea52 100644
--- a/store/source/stortree.hxx
+++ b/store/source/stortree.hxx
@@ -100,9 +100,9 @@ struct OStoreBTreeEntry
*======================================================================*/
#define STORE_MAGIC_BTREENODE sal_uInt32(0x58190322)
-struct OStoreBTreeNodeData : public store::OStorePageData
+struct OStoreBTreeNodeData : public store::PageData
{
- typedef OStorePageData base;
+ typedef PageData base;
typedef OStoreBTreeNodeData self;
typedef OStorePageGuard G;
commit ba09cda3ef52f58a1d5387ee33b30042baf2bf34
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Sep 30 10:25:45 2016 +0200
Remove "#if 1 /* EXP */"
...whatever it was supposed to be good for
Change-Id: I8f2a526aeaa484675e1bd6763fa692f8cbed2a51
diff --git a/store/source/storbase.hxx b/store/source/storbase.hxx
index a4be847..7d006c6 100644
--- a/store/source/storbase.hxx
+++ b/store/source/storbase.hxx
@@ -613,10 +613,8 @@ public:
return (m_xPage.get() != 0);
}
-#if 1 /* EXP */
PageHolder & get() { return m_xPage; }
PageHolder const & get() const { return m_xPage; }
-#endif /* EXP */
T * operator->()
{
commit 2950528c51b175ae704c674010d8538e3e83da08
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Sep 30 10:18:19 2016 +0200
No need for rtl_cache_* here
...which shows that m_pCount will never be null
Change-Id: I87c6e4bf5d258c59a8e91cd194c64b1ce85b4445
diff --git a/store/source/storbase.cxx b/store/source/storbase.cxx
index bb2cf27..7e2a8cd 100644
--- a/store/source/storbase.cxx
+++ b/store/source/storbase.cxx
@@ -33,39 +33,6 @@ using namespace store;
/*========================================================================
*
- * SharedCount::Allocator.
- *
- *======================================================================*/
-SharedCount::Allocator &
-SharedCount::Allocator::get()
-{
- static Allocator g_aSharedCountAllocator;
- return g_aSharedCountAllocator;
-}
-
-SharedCount::Allocator::Allocator()
-{
- m_cache = rtl_cache_create (
- "store_shared_count_cache",
- sizeof(long),
- 0, // objalign
- nullptr, // constructor
- nullptr, // destructor
- nullptr, // reclaim
- nullptr, // userarg
- nullptr, // default source
- 0 // flags
- );
-}
-
-SharedCount::Allocator::~Allocator()
-{
- rtl_cache_destroy (m_cache);
- m_cache = nullptr;
-}
-
-/*========================================================================
- *
* PageData::Allocator_Impl (default allocator).
*
*======================================================================*/
diff --git a/store/source/storbase.hxx b/store/source/storbase.hxx
index b861047..a4be847 100644
--- a/store/source/storbase.hxx
+++ b/store/source/storbase.hxx
@@ -84,42 +84,18 @@ class SharedCount
{
long * m_pCount;
- class Allocator
- {
- rtl_cache_type * m_cache;
-
- public:
- static Allocator & get();
-
- long * alloc()
- {
- return static_cast<long*>(rtl_cache_alloc (m_cache));
- }
- void free (long * pCount)
- {
- rtl_cache_free (m_cache, pCount);
- }
-
- protected:
- Allocator();
- ~Allocator();
- };
-
public:
SharedCount()
- : m_pCount(Allocator::get().alloc())
+ : m_pCount(new long)
{
- if (m_pCount != nullptr) (*m_pCount) = 1;
+ (*m_pCount) = 1;
}
~SharedCount()
{
- if (m_pCount != nullptr)
- {
- long new_count = --(*m_pCount);
- if (new_count == 0)
- Allocator::get().free(m_pCount);
- }
+ long new_count = --(*m_pCount);
+ if (new_count == 0)
+ delete m_pCount;
}
void swap (SharedCount & rhs) // nothrow
@@ -130,7 +106,7 @@ public:
SharedCount (SharedCount const & rhs) // nothrow
: m_pCount (rhs.m_pCount)
{
- if (m_pCount != nullptr) ++(*m_pCount);
+ ++(*m_pCount);
}
SharedCount & operator= (SharedCount const & rhs) // nothrow
{
@@ -141,7 +117,7 @@ public:
bool operator== (long count) const
{
- return (m_pCount != nullptr) && (*m_pCount == count);
+ return *m_pCount == count;
}
};
More information about the Libreoffice-commits
mailing list