Resolves: #i124896# [API CHANGE] remove obsoleted rtl/allocator.hxx

remove obsoleted sal-module-internal custom STL allocator

The SAL module avoided the heavy dependency on the stlport4-libraries by using
a custom allocator for its internal STL containers. With stlport4 removed these
dependencies are gone and the SAL-internal custom allocator is obsoleted.

(cherry picked from commit c6e0325df6efce45dbb2616a32b7745c449c6c58)

Conflicts:
	include/osl/diagnose.hxx
	include/rtl/allocator.hxx
	sal/osl/w32/procimpl.cxx
	sal/qa/osl/process/osl_process.cxx
	sal/rtl/bootstrap.cxx
	sal/rtl/source/hash.cxx
	sal/rtl/source/unload.cxx

Change-Id: I8515382828eda36aba1fec5f23e0f2a89aef7a33
This commit is contained in:
Herbert Dürr 2014-05-15 09:59:27 +00:00 committed by Caolán McNamara
parent b79b8d2c61
commit a908e4eb41
9 changed files with 5 additions and 194 deletions

View File

@ -35,7 +35,6 @@
#include <osl/diagnose.h>
#include <osl/interlck.h>
#include <osl/mutex.hxx>
#include <rtl/allocator.hxx>
#include <rtl/instance.hxx>
#include <sal/log.hxx>
#include <sal/saldllapi.h>
@ -98,8 +97,7 @@ struct VoidPtrHash : ::std::unary_function<void const*, ::std::size_t> {
}
};
typedef ::boost::unordered_set<void const*, VoidPtrHash, ::std::equal_to<void const*>,
::rtl::Allocator<void const*> > VoidPointerSet;
typedef ::boost::unordered_set<void const*, VoidPtrHash, ::std::equal_to<void const*> > VoidPointerSet;
struct ObjectRegistryData {
ObjectRegistryData( ::std::type_info const& rTypeInfo )

View File

@ -1,175 +0,0 @@
/* -*- 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 .
*/
#ifndef INCLUDED_RTL_ALLOCATOR_HXX
#define INCLUDED_RTL_ALLOCATOR_HXX
#include <sal/config.h>
#include <sal/types.h>
#include <rtl/alloc.h>
#include <cstddef>
/// @cond INTERNAL
// This is no general purpose STL allocator but one
// necessary to use STL for some implementation but
// avoid linking sal against the STLPort library!!!
// For more information on when and how to define a
// custom stl allocator have a look at Scott Meyers:
// "Effective STL", Nicolai M. Josuttis:
// "The C++ Standard Library - A Tutorial and Reference"
// and at http://www.josuttis.com/cppcode/allocator.html
namespace rtl {
template<class T>
class Allocator
{
public:
typedef T value_type;
typedef T* pointer;
typedef const T* const_pointer;
typedef T& reference;
typedef const T& const_reference;
typedef ::std::size_t size_type;
typedef ::std::ptrdiff_t difference_type;
template<class U>
struct rebind
{
typedef Allocator<U> other;
};
pointer address (reference value) const
{
return &value;
}
const_pointer address (const_reference value) const
{
return &value;
}
Allocator() SAL_THROW(())
{}
template<class U>
Allocator (SAL_UNUSED_PARAMETER const Allocator<U>&) SAL_THROW(())
{}
Allocator(const Allocator&) SAL_THROW(())
{}
~Allocator() SAL_THROW(())
{}
size_type max_size() const SAL_THROW(())
{
return size_type(-1)/sizeof(T);
}
/* Normally the code for allocate should
throw a std::bad_alloc exception if the
requested memory could not be allocated:
(C++ standard 20.4.1.1):
pointer allocate (size_type n, const void* hint = 0)
{
pointer p = reinterpret_cast<pointer>(
rtl_allocateMemory(sal_uInt32(n * sizeof(T))));
if (NULL == p)
throw ::std::bad_alloc();
return p;
}
but some compilers do not compile it if exceptions
are not enabled, e.g. GCC under Linux and it is
in general not desired to compile sal with exceptions
enabled. */
pointer allocate (size_type n, SAL_UNUSED_PARAMETER const void* = 0)
{
return reinterpret_cast<pointer>(
rtl_allocateMemory(sal_uInt32(n * sizeof(T))));
}
void deallocate (pointer p, SAL_UNUSED_PARAMETER size_type /* n */)
{
rtl_freeMemory(p);
}
#if HAVE_CXX11_PERFECT_FORWARDING && !defined(_LIBCPP_VERSION)
template< typename... Args >
void construct (pointer p, Args &&... value)
{
new ((void*)p)T(std::forward< Args >(value)...);
}
#else
void construct (pointer p, const T& value)
{
new ((void*)p)T(value);
}
#endif
void destroy (pointer p)
{
p->~T();
(void)p; //MSVC2005 annoyingly warns this is unused
}
};
// Custom STL allocators must be stateless (see
// references above) that's why the operators below
// return always true or false
template<class T, class U> inline bool operator ==(
SAL_UNUSED_PARAMETER const Allocator<T>&,
SAL_UNUSED_PARAMETER const Allocator<U>&) SAL_THROW(())
{
return true;
}
template<class T, class U>
inline bool operator!= (const Allocator<T>&, const Allocator<U>&) SAL_THROW(())
{
return false;
}
} /* namespace rtl */
/// @endcond
#endif /* INCLUDED_RTL_ALLOCATOR_HXX */
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View File

@ -119,7 +119,6 @@ $(eval $(call gb_Package_add_files_with_dir,odk_headers,$(SDKDIRNAME)/include,\
osl/thread.hxx \
osl/time.h \
rtl/alloc.h \
rtl/allocator.hxx \
rtl/bootstrap.h \
rtl/bootstrap.hxx \
rtl/byteseq.h \

View File

@ -25,7 +25,6 @@
#include "osl/thread.hxx"
#include "osl/time.h"
#include "rtl/alloc.h"
#include "rtl/allocator.hxx"
#include "rtl/bootstrap.h"
#include "rtl/bootstrap.hxx"
#include "rtl/character.hxx"

View File

@ -28,7 +28,7 @@
namespace {
typedef std::vector<rtl::OString, rtl::Allocator<rtl::OString> > OStringVec;
typedef std::vector<rtl::OString> OStringVec;
struct StaticDebugBaseAddressFilter
: rtl::StaticWithInit<OStringVec, StaticDebugBaseAddressFilter> {

View File

@ -22,7 +22,6 @@
#include "path_helper.h"
#include <rtl/ustring.hxx>
#include <rtl/allocator.hxx>
namespace osl
{

View File

@ -36,7 +36,6 @@
#include <rtl/ustring.hxx>
#include <rtl/ustrbuf.hxx>
#include "secimpl.h"
#include "rtl/allocator.hxx"
#include <osl/file.hxx>
#include <list>
@ -54,7 +53,6 @@ const rtl::OUString QUOTE("\"");
namespace /* private */
{
typedef std::list<rtl::OUString> string_container_t;
typedef string_container_t::iterator string_container_iterator_t;
typedef string_container_t::const_iterator string_container_const_iterator_t;

View File

@ -44,8 +44,6 @@
#include <unistd.h>
#endif
#include "rtl/allocator.hxx"
#include <iostream>
#include <fstream>
#include <vector>
@ -88,7 +86,7 @@ inline ::rtl::OUString getExecutablePath( void )
//rtl::OUString CWD = getExecutablePath();
typedef std::vector<std::string, rtl::Allocator<std::string> > string_container_t;
typedef std::vector<std::string> string_container_t;
typedef string_container_t::const_iterator string_container_const_iter_t;
typedef string_container_t::iterator string_container_iter_t;

View File

@ -37,7 +37,6 @@
#include <rtl/instance.hxx>
#include <rtl/malformeduriexception.hxx>
#include <rtl/uri.hxx>
#include "rtl/allocator.hxx"
#include <boost/noncopyable.hpp>
#include <boost/unordered_map.hpp>
@ -132,10 +131,7 @@ struct rtl_bootstrap_NameValue
{}
};
typedef std::list<
rtl_bootstrap_NameValue,
rtl::Allocator< rtl_bootstrap_NameValue >
> NameValueList;
typedef std::list<rtl_bootstrap_NameValue> NameValueList;
bool find(
NameValueList const & list, rtl::OUString const & key,
@ -607,8 +603,7 @@ namespace {
struct bootstrap_map: private boost::noncopyable {
typedef boost::unordered_map<
rtl::OUString, Bootstrap_Impl *,
rtl::OUStringHash, std::equal_to< rtl::OUString >,
rtl::Allocator< OUString > > t;
rtl::OUStringHash, std::equal_to< rtl::OUString > > t;
// get and release must only be called properly synchronized via some mutex
// (e.g., osl::Mutex::getGlobalMutex()):