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:
parent
b79b8d2c61
commit
a908e4eb41
@ -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 )
|
||||
|
@ -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: */
|
@ -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 \
|
||||
|
@ -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"
|
||||
|
@ -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> {
|
||||
|
@ -22,7 +22,6 @@
|
||||
|
||||
#include "path_helper.h"
|
||||
#include <rtl/ustring.hxx>
|
||||
#include <rtl/allocator.hxx>
|
||||
|
||||
namespace osl
|
||||
{
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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()):
|
||||
|
Loading…
x
Reference in New Issue
Block a user