summaryrefslogtreecommitdiff
path: root/sal/inc
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2013-04-19 18:54:16 +0200
committerDavid Tardon <dtardon@redhat.com>2013-04-24 05:17:10 +0000
commit6c7659b584ea7ed3652ca4eb9a2297f36310c365 (patch)
treeadf631e2d3db309b0696babd9d026bce0996c215 /sal/inc
parent24500d6798007d84521eb24a81c121ebe69d3bfd (diff)
move URE headers to include/
Change-Id: Ib48a12e902f2311c295b2007f08f44dee28f431d Reviewed-on: https://gerrit.libreoffice.org/3499 Reviewed-by: David Tardon <dtardon@redhat.com> Tested-by: David Tardon <dtardon@redhat.com>
Diffstat (limited to 'sal/inc')
-rw-r--r--sal/inc/osl/conditn.h88
-rw-r--r--sal/inc/osl/conditn.hxx121
-rw-r--r--sal/inc/osl/diagnose.h204
-rw-r--r--sal/inc/osl/diagnose.hxx209
-rw-r--r--sal/inc/osl/doublecheckedlocking.h75
-rw-r--r--sal/inc/osl/endian.h226
-rw-r--r--sal/inc/osl/file.h1639
-rw-r--r--sal/inc/osl/file.hxx1979
-rw-r--r--sal/inc/osl/getglobalmutex.hxx44
-rw-r--r--sal/inc/osl/interlck.h92
-rw-r--r--sal/inc/osl/module.h251
-rw-r--r--sal/inc/osl/module.hxx175
-rw-r--r--sal/inc/osl/mutex.h74
-rw-r--r--sal/inc/osl/mutex.hxx272
-rw-r--r--sal/inc/osl/nlsupport.h57
-rw-r--r--sal/inc/osl/pipe.h97
-rw-r--r--sal/inc/osl/pipe.hxx206
-rw-r--r--sal/inc/osl/pipe_decl.hxx229
-rw-r--r--sal/inc/osl/process.h451
-rw-r--r--sal/inc/osl/profile.h145
-rw-r--r--sal/inc/osl/profile.hxx196
-rw-r--r--sal/inc/osl/security.h163
-rw-r--r--sal/inc/osl/security.hxx103
-rw-r--r--sal/inc/osl/security_decl.hxx110
-rw-r--r--sal/inc/osl/signal.h112
-rw-r--r--sal/inc/osl/socket.h920
-rw-r--r--sal/inc/osl/socket.hxx559
-rw-r--r--sal/inc/osl/socket_decl.hxx721
-rw-r--r--sal/inc/osl/thread.h196
-rw-r--r--sal/inc/osl/thread.hxx238
-rw-r--r--sal/inc/osl/time.h159
-rw-r--r--sal/inc/osl/util.h50
-rw-r--r--sal/inc/rtl/alloc.h257
-rw-r--r--sal/inc/rtl/allocator.hxx175
-rw-r--r--sal/inc/rtl/bootstrap.h234
-rw-r--r--sal/inc/rtl/bootstrap.hxx226
-rw-r--r--sal/inc/rtl/byteseq.h317
-rw-r--r--sal/inc/rtl/byteseq.hxx136
-rw-r--r--sal/inc/rtl/character.hxx144
-rw-r--r--sal/inc/rtl/cipher.h317
-rw-r--r--sal/inc/rtl/crc.h63
-rw-r--r--sal/inc/rtl/digest.h643
-rw-r--r--sal/inc/rtl/instance.hxx637
-rw-r--r--sal/inc/rtl/locale.h136
-rw-r--r--sal/inc/rtl/logfile.h131
-rw-r--r--sal/inc/rtl/logfile.hxx205
-rw-r--r--sal/inc/rtl/malformeduriexception.hxx68
-rw-r--r--sal/inc/rtl/math.h475
-rw-r--r--sal/inc/rtl/math.hxx439
-rw-r--r--sal/inc/rtl/process.h79
-rw-r--r--sal/inc/rtl/random.h110
-rw-r--r--sal/inc/rtl/ref.hxx243
-rw-r--r--sal/inc/rtl/strbuf.h137
-rw-r--r--sal/inc/rtl/strbuf.hxx922
-rw-r--r--sal/inc/rtl/string.h1408
-rw-r--r--sal/inc/rtl/string.hxx1709
-rw-r--r--sal/inc/rtl/stringconcat.hxx284
-rw-r--r--sal/inc/rtl/stringutils.hxx187
-rw-r--r--sal/inc/rtl/tencinfo.h278
-rw-r--r--sal/inc/rtl/textcvt.h177
-rw-r--r--sal/inc/rtl/textenc.h270
-rw-r--r--sal/inc/rtl/unload.h92
-rw-r--r--sal/inc/rtl/uri.h352
-rw-r--r--sal/inc/rtl/uri.hxx144
-rw-r--r--sal/inc/rtl/ustrbuf.h212
-rw-r--r--sal/inc/rtl/ustrbuf.hxx1386
-rw-r--r--sal/inc/rtl/ustring.h2022
-rw-r--r--sal/inc/rtl/ustring.hxx2416
-rw-r--r--sal/inc/rtl/uuid.h182
-rw-r--r--sal/inc/sal/ByteBufferWrapper.hxx40
-rw-r--r--sal/inc/sal/alloca.h66
-rw-r--r--sal/inc/sal/config.h100
-rw-r--r--sal/inc/sal/detail/log.h106
-rw-r--r--sal/inc/sal/log-areas.dox355
-rw-r--r--sal/inc/sal/log.hxx317
-rw-r--r--sal/inc/sal/macros.h66
-rw-r--r--sal/inc/sal/main.h149
-rw-r--r--sal/inc/sal/mathconf.h156
-rw-r--r--sal/inc/sal/saldllapi.h35
-rw-r--r--sal/inc/sal/types.h566
-rw-r--r--sal/inc/systools/win32/snprintf.h88
81 files changed, 0 insertions, 29418 deletions
diff --git a/sal/inc/osl/conditn.h b/sal/inc/osl/conditn.h
deleted file mode 100644
index 8803ee85f2dd..000000000000
--- a/sal/inc/osl/conditn.h
+++ /dev/null
@@ -1,88 +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 _OSL_CONDITION_H_
-#define _OSL_CONDITION_H_
-
-#include "sal/config.h"
-
-#include "osl/time.h"
-#include "sal/saldllapi.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void* oslCondition;
-
-typedef enum {
- osl_cond_result_ok, /* successful completion */
- osl_cond_result_error, /* error occurred, check osl_getLastSocketError() for details */
- osl_cond_result_timeout, /* blocking operation timed out */
- osl_cond_result_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslConditionResult;
-
-/** Creates a condition.
- The condition is in the reset-state.
- @returns 0 if condition could not be created.
-*/
-SAL_DLLPUBLIC oslCondition SAL_CALL osl_createCondition(void);
-
-/** Free the memory used by the condition.
- @param Condition the condition handle.
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_destroyCondition(oslCondition Condition);
-
-/** Sets condition to True => wait() will not block, check() returns True.
- NOTE: ALL threads waiting on this condition are unblocked!
- @param Condition handle to a created condition.
- @return False if system-call failed.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_setCondition(oslCondition Condition);
-
-/** Sets condition to False => wait() will block, check() returns False
- @param Condition handle to a created condition.
- @return False if system-call failed.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_resetCondition(oslCondition Condition);
-
-/** Blocks if condition is not set<BR>
- If condition has been destroyed prematurely, wait() will
- return with False.
- @param Condition handle to a created condition.
- @param pTimeout Tiemout value or NULL for infinite waiting
- @return False if system-call failed.
-*/
-SAL_DLLPUBLIC oslConditionResult SAL_CALL osl_waitCondition(oslCondition Condition, const TimeValue* pTimeout);
-
-/** Queries the state of the condition without blocking.
- @param Condition handle to a created condition.
- @return True: condition is set. <BR>
- False: condition is not set. <BR>
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_checkCondition(oslCondition Condition);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OSL_CONDITION_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/conditn.hxx b/sal/inc/osl/conditn.hxx
deleted file mode 100644
index 449242273a7f..000000000000
--- a/sal/inc/osl/conditn.hxx
+++ /dev/null
@@ -1,121 +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 _OSL_CONDITN_HXX_
-#define _OSL_CONDITN_HXX_
-
-#ifdef __cplusplus
-
-#include <osl/time.h>
-
-#include <osl/conditn.h>
-
-
-namespace osl
-{
-
- class Condition
- {
- public:
-
- enum Result
- {
- result_ok = osl_cond_result_ok,
- result_error = osl_cond_result_error,
- result_timeout = osl_cond_result_timeout
- };
-
- /* Create a condition.
- */
- Condition()
- {
- condition = osl_createCondition();
- }
-
- /* Release the OS-structures and free condition data-structure.
- */
- ~Condition()
- {
- osl_destroyCondition(condition);
- }
-
- /* Release all waiting threads, check returns sal_True.
- */
- void set()
- {
- osl_setCondition(condition);
- }
-
- /* Reset condition to false: wait() will block, check() returns sal_False.
- */
- void reset() {
- osl_resetCondition(condition);
- }
-
- /** Blocks the calling thread until condition is set.
- */
- Result wait(const TimeValue *pTimeout = 0)
- {
- return (Result) osl_waitCondition(condition, pTimeout);
- }
-
- /** Checks if the condition is set without blocking.
- */
- sal_Bool check()
- {
- return osl_checkCondition(condition);
- }
-
-
- private:
- oslCondition condition;
-
- /** The underlying oslCondition has no reference count.
-
- Since the underlying oslCondition is not a reference counted object, copy
- constructed Condition may work on an already destructed oslCondition object.
-
- */
- Condition(const Condition&);
-
- /** The underlying oslCondition has no reference count.
-
- When destructed, the Condition object destroys the undelying oslCondition,
- which might cause severe problems in case it's a temporary object.
-
- */
- Condition(oslCondition condition);
-
- /** This assignment operator is private for the same reason as
- the copy constructor.
- */
- Condition& operator= (const Condition&);
-
- /** This assignment operator is private for the same reason as
- the constructor taking a oslCondition argument.
- */
- Condition& operator= (oslCondition);
- };
-
-}
-
-#endif /* __cplusplus */
-#endif /* _OSL_CONDITN_HXX_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/diagnose.h b/sal/inc/osl/diagnose.h
deleted file mode 100644
index b3bfee91ad25..000000000000
--- a/sal/inc/osl/diagnose.h
+++ /dev/null
@@ -1,204 +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 _OSL_DIAGNOSE_H_
-#define _OSL_DIAGNOSE_H_
-
-#include "sal/config.h"
-
-#include "sal/detail/log.h"
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-/** provides simple diagnostic support
-
- The facilities provided by this header are deprecated. True assertions
- (that detect broken program logic) should use standard assert (which aborts
- if an assertion fails, and is controlled by the standard NDEBUG macro).
- Logging of warnings (e.g., about malformed input) and traces (e.g., about
- steps taken while executing some protocol) should use the facilities
- provided by (C++ only) sal/log.hxx.
-
- Because the assertion macros (OSL_ASSERT, OSL_ENSURE, OSL_FAIL, OSL_PRECOND,
- and OSL_POSTCOND) have been used for true assertions as well as for logged
- warnings, they map to SAL_WARN instead of standard assert. OSL_TRACE maps
- to SAL_INFO.
-
- The functions defined in this header are not intended to be used directly,
- but through defined macros. The macros can be divided into three categories:
- assertions, traces and other stuff .-) Their usability depends on the value
- of OSL_DEBUG_LEVEL macro: assertions are only active if OSL_DEBUG_LEVEL is 1
- or greater, traces if OSL_DEBUG_LEVEL is 2 or greater.
-
- Assertions (cond is bool, msg is char*):
- OSL_ASSERT(cond)
- If cond is false, reports an error.
-
- OSL_ENSURE(cond, msg)
- If cond is false, reports an error with message msg.
-
- OSL_FAIL(msg)
- Reports an error with message msg unconditionally.
-
- OSL_PRECOND(cond, msg)
- OSL_POSTCOND(cond, msg)
- These two are functionally equivalent to OSL_ENSURE(cond, msg). They are
- intended to be used for checking pre- and postconditions of functions.
-
- Traces:
- OSL_TRACE(fmt, args...)
- Prints trace message. The arguments have the same meaning as the
- arguments of printf.
-
- Other:
- OSL_VERIFY(expr)
- Evaluates the expression and if it is false, reports an error. The
- expression is evaluated once without regard of the value of
- OSL_DEBUG_LEVEL.
-
- Example:
-
- void extractBool(Any const& rAny, bool& rBool)
- {
- OSL_VERIFY(rAny >>= rBool);
- }
-
- OSL_DEBUG_ONLY(expr)
- */
-
-#if !defined OSL_DEBUG_LEVEL
-#define OSL_DEBUG_LEVEL 0
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* //////////////////////////////////////////////////////////////////////////
- Diagnostic support
-*/
-
-SAL_DLLPUBLIC void SAL_CALL osl_breakDebug(void);
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_assertFailedLine(const sal_Char* pszFileName, sal_Int32 nLine, const sal_Char* pszMessage);
-SAL_DLLPUBLIC void SAL_CALL osl_trace(const sal_Char* pszFormat, ...);
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_reportError(sal_uInt32 nType, const sal_Char* pszErrorMessage);
-
-/*
- For message delivery
-*/
-
-/** a message delivery function which receives a pre-formatted message string
-*/
-typedef void (SAL_CALL *pfunc_osl_printDebugMessage)( const sal_Char * pszMessage );
-
-/** a message delivery function which receives detailed information about where the message was triggered
-*/
-typedef void (SAL_CALL *pfunc_osl_printDetailedDebugMessage)( const sal_Char * pszFileName, sal_Int32 nLine, const sal_Char* pszMessage );
-
-/** sets a message delivery function
-
- The function set here is ignored if a function for detailed message information
- (pfunc_osl_printDetailedDebugMessage) has been set.
-
- The given message handler must be able to cope with a null message.
-*/
-SAL_DLLPUBLIC pfunc_osl_printDebugMessage SAL_CALL osl_setDebugMessageFunc( pfunc_osl_printDebugMessage pNewFunc );
-
-/** sets a delivery function for detailed message information.
-
- The given message handler must be able to cope with a null message.
-*/
-SAL_DLLPUBLIC pfunc_osl_printDetailedDebugMessage SAL_CALL osl_setDetailedDebugMessageFunc( pfunc_osl_printDetailedDebugMessage pNewFunc );
-
-#ifdef __cplusplus
-}
-#endif
-
-#define OSL_THIS_FILE __FILE__
-
-/* the macro OSL_LOG_PREFIX is intended to be an office internal macro for now
-
- it is deprecated and superseded by (C++ only) SAL_WHERE
-*/
-#define OSL_LOG_PREFIX SAL_DETAIL_WHERE
-
-#define OSL_DEBUG_ONLY(s) _OSL_DEBUG_ONLY(s)
-
-#define OSL_TRACE(...) \
- SAL_DETAIL_INFO_IF_FORMAT(OSL_DEBUG_LEVEL > 0, "legacy.osl", __VA_ARGS__)
-
-#if OSL_DEBUG_LEVEL > 0
-#define OSL_ASSERT(c) \
- SAL_DETAIL_WARN_IF_FORMAT(!(c), "legacy.osl", "OSL_ASSERT: %s", #c)
-#define OSL_ENSURE(c, m) SAL_DETAIL_WARN_IF_FORMAT(!(c), "legacy.osl", "%s", m)
-#define OSL_FAIL(m) SAL_DETAIL_WARN_IF_FORMAT(sal_True, "legacy.osl", "%s", m)
-#else
-#define OSL_ASSERT(c) ((void) 0)
-#define OSL_ENSURE(c, m) ((void) 0)
-#define OSL_FAIL(m) ((void) 0)
-#endif
-
-#define OSL_VERIFY(c) do { if (!(c)) OSL_ASSERT(0); } while (0)
-#define OSL_PRECOND(c, m) OSL_ENSURE(c, m)
-#define OSL_POSTCOND(c, m) OSL_ENSURE(c, m)
-
-
-#ifdef __cplusplus
-#define _OSL_GLOBAL ::
-#else
-#define _OSL_GLOBAL
-#endif /* __cplusplus */
-
-#if OSL_DEBUG_LEVEL > 0
-
-#define _OSL_DEBUG_ONLY(f) (f)
-
-#else
-
-#define _OSL_DEBUG_ONLY(f) ((void)0)
-
-#endif /* OSL_DEBUG_LEVEL */
-
-/* the macro OSL_THIS_FUNC is intended to be an office internal macro for now */
-/* copied from boost/current_function.hpp to make it usable from C
- * sources as well
- *
- * Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
- *
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt) */
-#if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600))
-#define OSL_THIS_FUNC __PRETTY_FUNCTION__
-#elif defined(__DMC__) && (__DMC__ >= 0x810)
-#define OSL_THIS_FUNC __PRETTY_FUNCTION__
-#elif defined(__FUNCSIG__)
-#define OSL_THIS_FUNC __FUNCSIG__
-#elif (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 600)) || (defined(__IBMCPP__) && (__IBMCPP__ >= 500))
-#define OSL_THIS_FUNC __FUNCTION__
-#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
-#define OSL_THIS_FUNC __func__
-#else
-#define OSL_THIS_FUNC ""
-#endif
-
-#endif /* _OSL_DIAGNOSE_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/diagnose.hxx b/sal/inc/osl/diagnose.hxx
deleted file mode 100644
index bbf1fa7231c4..000000000000
--- a/sal/inc/osl/diagnose.hxx
+++ /dev/null
@@ -1,209 +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 OSL_DIAGNOSE_HXX_INCLUDED
-#define OSL_DIAGNOSE_HXX_INCLUDED
-
-#include "sal/config.h"
-
-#include <functional>
-#include <typeinfo>
-
-#ifndef HAVE_CXX0X
-#define BOOST_NO_0X_HDR_TYPEINDEX
-#endif
-#include "boost/unordered_set.hpp"
-#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"
-#include "sal/types.h"
-
-/// @cond INTERNAL
-
-namespace osl {
-namespace detail {
-
-struct ObjectRegistryData;
-
-} // namespace detail
-} // namespace osl
-
-extern "C" {
-
-SAL_DLLPUBLIC bool SAL_CALL osl_detail_ObjectRegistry_storeAddresses(
- char const* pName )
- SAL_THROW_EXTERN_C();
-
-SAL_DLLPUBLIC bool SAL_CALL osl_detail_ObjectRegistry_checkObjectCount(
- ::osl::detail::ObjectRegistryData const& rData, ::std::size_t nExpected )
- SAL_THROW_EXTERN_C();
-
-SAL_DLLPUBLIC void SAL_CALL osl_detail_ObjectRegistry_registerObject(
- ::osl::detail::ObjectRegistryData & rData, void const* pObj )
- SAL_THROW_EXTERN_C();
-
-SAL_DLLPUBLIC void SAL_CALL osl_detail_ObjectRegistry_revokeObject(
- ::osl::detail::ObjectRegistryData & rData, void const* pObj )
- SAL_THROW_EXTERN_C();
-
-// These functions presumably should not be extern "C", but changing
-// that would break binary compatibility.
-#ifdef __clang__
-#pragma clang diagnostic push
-// Guard against slightly older clang versions that don't have
-// -Wreturn-type-c-linkage...
-#pragma clang diagnostic ignored "-Wunknown-pragmas"
-#pragma clang diagnostic ignored "-Wreturn-type-c-linkage"
-#endif
-
-SAL_DLLPUBLIC ::osl::Mutex & SAL_CALL osl_detail_ObjectRegistry_getMutex()
- SAL_THROW_EXTERN_C();
-
-#ifdef __clang__
-#pragma clang diagnostic pop
-#endif
-
-} // extern "C"
-
-namespace osl {
-
-namespace detail {
-
-struct VoidPtrHash : ::std::unary_function<void const*, ::std::size_t> {
- ::std::size_t operator()( void const* p ) const {
- ::std::size_t const d = static_cast< ::std::size_t >(
- reinterpret_cast< ::std::ptrdiff_t >(p) );
- return d + (d >> 3);
- }
-};
-
-typedef ::boost::unordered_set<void const*, VoidPtrHash, ::std::equal_to<void const*>,
- ::rtl::Allocator<void const*> > VoidPointerSet;
-
-struct ObjectRegistryData {
- ObjectRegistryData( ::std::type_info const& rTypeInfo )
- : m_pName(rTypeInfo.name()), m_nCount(0), m_addresses(),
- m_bStoreAddresses(osl_detail_ObjectRegistry_storeAddresses(m_pName)){}
-
- char const* const m_pName;
- oslInterlockedCount m_nCount;
- VoidPointerSet m_addresses;
- bool const m_bStoreAddresses;
-};
-
-template <typename T>
-class ObjectRegistry
-{
-public:
- ObjectRegistry() : m_data( typeid(T) ) {}
- ~ObjectRegistry() { checkObjectCount(0); }
-
- bool checkObjectCount( ::std::size_t nExpected ) const {
- bool const bRet = osl_detail_ObjectRegistry_checkObjectCount(
- m_data, nExpected );
- if (!bRet && m_data.m_bStoreAddresses) {
- MutexGuard const guard( osl_detail_ObjectRegistry_getMutex() );
- // following loop is for debugging purposes, iterating over map:
- VoidPointerSet::const_iterator iPos(m_data.m_addresses.begin());
- VoidPointerSet::const_iterator const iEnd(m_data.m_addresses.end());
- for ( ; iPos != iEnd; ++iPos ) {
- SAL_WARN_IF( *iPos == 0, "sal.debug", "null pointer" );
- }
- }
- return bRet;
- }
-
- void registerObject( void const* pObj ) {
- osl_detail_ObjectRegistry_registerObject(m_data, pObj);
- }
-
- void revokeObject( void const* pObj ) {
- osl_detail_ObjectRegistry_revokeObject(m_data, pObj);
- }
-
-private:
- // not impl:
- ObjectRegistry( ObjectRegistry const& );
- ObjectRegistry const& operator=( ObjectRegistry const& );
-
- ObjectRegistryData m_data;
-};
-
-} // namespace detail
-
-/** Helper class which indicates leaking object(s) of a particular class in
- non-pro builds; use e.g.
-
- <pre>
- class MyClass : private osl::DebugBase<MyClass> {...};
- </pre>
-
- Using the environment variable
-
- OSL_DEBUGBASE_STORE_ADDRESSES=MyClass;YourClass;...
-
- you can specify a ';'-separated list of strings matching to class names
- (or "all" for all classes), for which DebugBase stores addresses to created
- objects instead of just counting them. This enables you to iterate over
- leaking objects in your debugger.
-
- @tparam InheritingClassT binds the template instance to that class
- @attention Use at own risk.
- For now this is just public (yet unpublished) API and may change
- in the future!
-*/
-template <typename InheritingClassT>
-class DebugBase
-{
-public:
-#if OSL_DEBUG_LEVEL <= 0
- static bool checkObjectCount( ::std::size_t = 0 ) { return true; }
-#else // OSL_DEBUG_LEVEL > 0
- /** @return whether the expected number of objects is alive,
- else this function SAL_WARNs
- */
- static bool checkObjectCount( ::std::size_t nExpected = 0 ) {
- return StaticObjectRegistry::get().checkObjectCount(nExpected);
- }
-
-protected:
- DebugBase() {
- StaticObjectRegistry::get().registerObject( this );
- }
- ~DebugBase() {
- StaticObjectRegistry::get().revokeObject( this );
- }
-
-private:
- struct StaticObjectRegistry
- : ::rtl::Static<detail::ObjectRegistry<InheritingClassT>,
- StaticObjectRegistry> {};
-#endif
-};
-
-} // namespace osl
-
-/// @endcond
-
-#endif // ! defined(OSL_DIAGNOSE_HXX_INCLUDED)
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/doublecheckedlocking.h b/sal/inc/osl/doublecheckedlocking.h
deleted file mode 100644
index 64b07d46cd6c..000000000000
--- a/sal/inc/osl/doublecheckedlocking.h
+++ /dev/null
@@ -1,75 +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_OSL_DOUBLECHECKEDLOCKING_H
-#define INCLUDED_OSL_DOUBLECHECKEDLOCKING_H
-
-#if defined __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/** A platform specific macro needed to make double-checked locking work.
-
- See
- <http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html>
- for a description of double-checked locking, why it is broken, and how it
- can be fixed. On platforms where it is necessary, this macro will expand
- to some memory barrier instruction. On many platforms, double-checked
- locking works as it is, though, so on those platforms this macro will be
- empty. This is a macro instead of a (C++ inline) function to allow for
- maximum performance in both C and C++.
-
- If possible, use the rtl_Instance template instead of explicitly spelling
- out the double-checked locking pattern. There are few cases where you
- will have to spell it out explicitly (e.g., the logic of a certain
- instance of the pattern is too complex to be mapped to the template, or
- some compiler refuses to compile a template instantiation due to internal
- compiler errors), though, and you should always call this macro at the
- right places then:
-
- static T * pInstance = 0;
-
- T * p = pInstance;
- if (!p)
- {
- Guard aGuard(aMutex);
- p = pInstance;
- if (!p)
- {
- p = ...;
- OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
- pInstance = p;
- }
- }
- else
- OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
- return p;
-
- One extra advantage of this macro is that it makes it easier to find all
- places where double-checked locking is used.
- */
-#define OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER() /* empty */
-
-#if defined __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* INCLUDED_OSL_DOUBLECHECKEDLOCKING_H */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/endian.h b/sal/inc/osl/endian.h
deleted file mode 100644
index 82ec1eaca7b1..000000000000
--- a/sal/inc/osl/endian.h
+++ /dev/null
@@ -1,226 +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 _OSL_ENDIAN_H_
-#define _OSL_ENDIAN_H_
-
-#include <sal/types.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Determine the platform byte order as _BIG_ENDIAN, _LITTLE_ENDIAN, ...
- */
-#ifdef _WIN32
-# if defined(_M_IX86)
-# define _LITTLE_ENDIAN
-# elif defined(_M_AMD64)
-# define _LITTLE_ENDIAN
-# elif defined(_M_MRX000)
-# define _LITTLE_ENDIAN
-# elif defined(_M_ALPHA)
-# define _LITTLE_ENDIAN
-# elif defined(_M_PPC)
-# define _LITTLE_ENDIAN
-# endif
-#endif
-
-#ifdef LINUX
-# include <endian.h>
-# if __BYTE_ORDER == __LITTLE_ENDIAN
-# ifndef _LITTLE_ENDIAN
-# define _LITTLE_ENDIAN
-# endif
-# elif __BYTE_ORDER == __BIG_ENDIAN
-# ifndef _BIG_ENDIAN
-# define _BIG_ENDIAN
-# endif
-# endif
-#endif
-
-#ifdef ANDROID
-# include <endian.h>
-# if __BYTE_ORDER == __LITTLE_ENDIAN
-# ifndef _LITTLE_ENDIAN
-# define _LITTLE_ENDIAN
-# endif
-# elif __BYTE_ORDER == __BIG_ENDIAN
-# ifndef _BIG_ENDIAN
-# define _BIG_ENDIAN
-# endif
-# endif
-#endif
-
-#ifdef NETBSD
-# include <machine/endian.h>
-# if BYTE_ORDER == LITTLE_ENDIAN
-# undef _BIG_ENDIAN
-# elif BYTE_ORDER == BIG_ENDIAN
-# undef _LITTLE_ENDIAN
-# endif
-#endif
-
-#ifdef FREEBSD
-# include <sys/param.h>
-# include <machine/endian.h>
-#if __FreeBSD_version < 500000
-# if BYTE_ORDER == LITTLE_ENDIAN
-# define _LITTLE_ENDIAN
-# elif BYTE_ORDER == BIG_ENDIAN
-# define _BIG_ENDIAN
-# endif
-#endif
-#endif
-
-#ifdef AIX
-# include <sys/machine.h>
-# if BYTE_ORDER == LITTLE_ENDIAN
-# ifndef _LITTLE_ENDIAN
-# define _LITTLE_ENDIAN
-# endif
-# elif BYTE_ORDER == BIG_ENDIAN
-# ifndef _BIG_ENDIAN
-# define _BIG_ENDIAN
-# endif
-# endif
-#endif
-
-#ifdef SOLARIS
-# include <sys/isa_defs.h>
-#endif
-
-#ifdef MACOSX
-# include <machine/endian.h>
-# if BYTE_ORDER == LITTLE_ENDIAN
-# ifndef _LITTLE_ENDIAN
-# define _LITTLE_ENDIAN
-# endif
-# elif BYTE_ORDER == BIG_ENDIAN
-# ifndef _BIG_ENDIAN
-# define _BIG_ENDIAN
-# endif
-# endif
-#endif
-
-#ifdef IOS
-# include <machine/endian.h>
-# if BYTE_ORDER == LITTLE_ENDIAN
-# ifndef _LITTLE_ENDIAN
-# define _LITTLE_ENDIAN
-# endif
-# elif BYTE_ORDER == BIG_ENDIAN
-# ifndef _BIG_ENDIAN
-# define _BIG_ENDIAN
-# endif
-# endif
-#endif
-
-/** Check supported platform.
- */
-#if !defined(_WIN32) && \
- !defined(LINUX) && !defined(NETBSD) && \
- !defined(AIX) && !defined(OPENBSD) && \
- !defined(SOLARIS) && !defined(MACOSX) && !defined(FREEBSD) && \
- !defined(DRAGONFLY) && \
- !defined(IOS) && !defined(ANDROID)
-# error "Target platform not specified !"
-#endif
-
-
-/** Define the determined byte order as OSL_BIGENDIAN or OSL_LITENDIAN.
- */
-#if defined _LITTLE_ENDIAN
-# define OSL_LITENDIAN
-#elif defined _BIG_ENDIAN
-# define OSL_BIGENDIAN
-#else
-# error undetermined endianess
-#endif
-
-
-/** Define macros for byte order manipulation.
- */
-#ifndef OSL_MAKEBYTE
-# define OSL_MAKEBYTE(nl, nh) ((sal_uInt8)(((nl) & 0x0F) | (((nh) & 0x0F) << 4)))
-#endif
-#ifndef OSL_LONIBBLE
-# define OSL_LONIBBLE(b) ((sal_uInt8)((b) & 0x0F))
-#endif
-#ifndef OSL_HINIBBLE
-# define OSL_HINIBBLE(b) ((sal_uInt8)(((b) >> 4) & 0x0F))
-#endif
-
-#ifndef OSL_MAKEWORD
-# define OSL_MAKEWORD(bl, bh) ((sal_uInt16)((bl) & 0xFF) | (((sal_uInt16)(bh) & 0xFF) << 8))
-#endif
-#ifndef OSL_LOBYTE
-# define OSL_LOBYTE(w) ((sal_uInt8)((sal_uInt16)(w) & 0xFF))
-#endif
-#ifndef OSL_HIBYTE
-# define OSL_HIBYTE(w) ((sal_uInt8)(((sal_uInt16)(w) >> 8) & 0xFF))
-#endif
-
-#ifndef OSL_MAKEDWORD
-# define OSL_MAKEDWORD(wl, wh) ((sal_uInt32)((wl) & 0xFFFF) | (((sal_uInt32)(wh) & 0xFFFF) << 16))
-#endif
-#ifndef OSL_LOWORD
-# define OSL_LOWORD(d) ((sal_uInt16)((sal_uInt32)(d) & 0xFFFF))
-#endif
-#ifndef OSL_HIWORD
-# define OSL_HIWORD(d) ((sal_uInt16)(((sal_uInt32)(d) >> 16) & 0xFFFF))
-#endif
-
-
-/** Define macros for swapping between host and network byte order.
- */
-#ifdef OSL_BIGENDIAN
-#ifndef OSL_NETWORD
-# define OSL_NETWORD(w) (sal_uInt16)(w)
-#endif
-#ifndef OSL_NETDWORD
-# define OSL_NETDWORD(d) (sal_uInt32)(d)
-#endif
-#else /* OSL_LITENDIAN */
-#ifndef OSL_NETWORD
-# define OSL_NETWORD(w) OSL_MAKEWORD(OSL_HIBYTE(w),OSL_LOBYTE(w))
-#endif
-#ifndef OSL_NETDWORD
-# define OSL_NETDWORD(d) OSL_MAKEDWORD(OSL_NETWORD(OSL_HIWORD(d)),OSL_NETWORD(OSL_LOWORD(d)))
-#endif
-#endif /* OSL_BIGENDIAN */
-
-
-/** Define macros for swapping between byte orders.
- */
-#ifndef OSL_SWAPWORD
-# define OSL_SWAPWORD(w) OSL_MAKEWORD(OSL_HIBYTE(w),OSL_LOBYTE(w))
-#endif
-#ifndef OSL_SWAPDWORD
-# define OSL_SWAPDWORD(d) OSL_MAKEDWORD(OSL_SWAPWORD(OSL_HIWORD(d)),OSL_SWAPWORD(OSL_LOWORD(d)))
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*_OSL_ENDIAN_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/file.h b/sal/inc/osl/file.h
deleted file mode 100644
index e8277e21ebc3..000000000000
--- a/sal/inc/osl/file.h
+++ /dev/null
@@ -1,1639 +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 _OSL_FILE_H_
-#define _OSL_FILE_H_
-
-#include "sal/config.h"
-
-#include "osl/time.h"
-#include "rtl/ustring.h"
-#include "sal/saldllapi.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @file
-
-Main goals and usage hints
-
-The main intentention of this interface is to provide an universal portable and
-high performance access to file system issues on any operating system.<p>
-
-There are a few main goals:<p>
-
-1.The path specifications always has to be absolut. Any usage of relative path
-specifications is forbidden. Exceptions are <code>osl_getSystemPathFromFileURL</code>,
-<code>osl_getFileURLFromSystemPath</code> and <code>osl_getAbsoluteFileURL</code>. Most operating systems
-provide a "Current Directory" per process. This is the reason why relative path
-specifications can cause problems in multithreading environments.<p>
-
-2.Proprietary notations of file paths are not supported. Every path notation
-must the file URL specification. File URLs must be encoded in UTF8 and
-after that escaped. Although the URL parameter is a unicode string, the must
-contain only ASCII characters<p>
-
-3.The caller cannot get any information whether a file system is case sensitive,
-case preserving or not. The operating system implementation itself should
-determine if it can map case-insensitive paths. The case correct notation of
-a filename or file path is part of the "File Info". This case correct name
-can be used as a unique key if neccessary.<p>
-
-4. Obtaining information about files or volumes is controlled by a
-bitmask which specifies which fields are of interest. Due to performance
-issues it is not recommended to obtain information which is not needed.
-But if the operating system provides more information anyway the
-implementation can set more fields on output as were requested. It is in the
-responsibility of the caller to decide if he uses this additional information
-or not. But he should do so to prevent further unnecessary calls if the information
-is already there.<br>
-
-The input bitmask supports a flag <code>osl_FileStatus_Mask_Validate</code> which
-can be used to force retrieving uncached validated information. Setting this flag
-when calling <code>osl_getFileStatus</code> in combination with no other flag is
-a synonym for a "FileExists". This should only be done when processing a single file
-(f.e. before opening) and NEVER during enumeration of directory contents on any step
-of information processing. This would change the runtime behaviour from O(n) to
-O(n*n/2) on nearly every file system.<br>
-On Windows NT reading the contents of an directory with 7000 entries and
-getting full information about every file only takes 0.6 seconds. Specifying the
-flag <code>osl_FileStatus_Mask_Validate</code> for each entry will increase the
-time to 180 seconds (!!!).
-
-*/
-
-
-
-/* Error codes according to errno */
-
-typedef enum {
- osl_File_E_None,
- osl_File_E_PERM,
- osl_File_E_NOENT,
- osl_File_E_SRCH,
- osl_File_E_INTR,
- osl_File_E_IO,
- osl_File_E_NXIO,
- osl_File_E_2BIG,
- osl_File_E_NOEXEC,
- osl_File_E_BADF,
- osl_File_E_CHILD,
- osl_File_E_AGAIN,
- osl_File_E_NOMEM,
- osl_File_E_ACCES,
- osl_File_E_FAULT,
- osl_File_E_BUSY,
- osl_File_E_EXIST,
- osl_File_E_XDEV,
- osl_File_E_NODEV,
- osl_File_E_NOTDIR,
- osl_File_E_ISDIR,
- osl_File_E_INVAL,
- osl_File_E_NFILE,
- osl_File_E_MFILE,
- osl_File_E_NOTTY,
- osl_File_E_FBIG,
- osl_File_E_NOSPC,
- osl_File_E_SPIPE,
- osl_File_E_ROFS,
- osl_File_E_MLINK,
- osl_File_E_PIPE,
- osl_File_E_DOM,
- osl_File_E_RANGE,
- osl_File_E_DEADLK,
- osl_File_E_NAMETOOLONG,
- osl_File_E_NOLCK,
- osl_File_E_NOSYS,
- osl_File_E_NOTEMPTY,
- osl_File_E_LOOP,
- osl_File_E_ILSEQ,
- osl_File_E_NOLINK,
- osl_File_E_MULTIHOP,
- osl_File_E_USERS,
- osl_File_E_OVERFLOW,
- osl_File_E_NOTREADY,
- osl_File_E_invalidError, /* unmapped error: always last entry in enum! */
- osl_File_E_TIMEDOUT,
- osl_File_E_NETWORK,
- osl_File_E_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslFileError;
-
-typedef void *oslDirectory;
-typedef void *oslDirectoryItem;
-
-
-/** Open a directory for enumerating its contents.
-
- @param pustrDirectoryURL [in]
- The full qualified URL of the directory.
-
- @param pDirectory [out]
- On success it receives a handle used for subsequent calls by osl_getNextDirectoryItem().
- The handle has to be released by a call to osl_closeDirectory().
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOENT the specified path doesn't exist<br>
- osl_File_E_NOTDIR the specified path is not an directory <br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_MFILE too many open files used by the process<br>
- osl_File_E_NFILE too many open files in the system<br>
- osl_File_E_NAMETOOLONG File name too long<br>
- osl_File_E_LOOP Too many symbolic links encountered<p>
-
- @see osl_getNextDirectoryItem()
- @see osl_closeDirectory()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_openDirectory(
- rtl_uString *pustrDirectoryURL, oslDirectory *pDirectory);
-
-
-/** Retrieve the next item of a previously opened directory.
-
- Retrieves the next item of a previously opened directory.
- All handles have an initial refcount of 1.
-
- @param Directory [in]
- A directory handle received from a previous call to osl_openDirectory().
-
- @param pItem [out]
- On success it receives a handle that can be used for subsequent calls to osl_getFileStatus().
- The handle has to be released by a call to osl_releaseDirectoryItem().
-
- @param uHint [in]
- With this parameter the caller can tell the implementation that (s)he
- is going to call this function uHint times afterwards. This enables the implementation to
- get the information for more than one file and cache it until the next calls.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_NOENT no more entries in this directory<br>
- osl_File_E_BADF invalid oslDirectory parameter<br>
- osl_File_E_OVERFLOW the value too large for defined data type
-
- @see osl_releaseDirectoryItem()
- @see osl_acquireDirectoryItem()
- @see osl_getDirectoryItem()
- @see osl_getFileStatus()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getNextDirectoryItem(
- oslDirectory Directory,
- oslDirectoryItem *pItem,
- sal_uInt32 uHint
- );
-
-
-/** Release a directory handle.
-
- @param Directory [in]
- A handle received by a call to osl_openDirectory().
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures<br>
- osl_File_E_BADF invalid oslDirectory parameter<br>
- osl_File_E_INTR the function call was interrupted<p>
-
- @see osl_openDirectory()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_closeDirectory(
- oslDirectory Directory);
-
-
-/** Retrieve a single directory item.
-
- Retrieves a single directory item. The returned handle has an initial refcount of 1.
- Due to performance issues it is not recommended to use this function while
- enumerating the contents of a directory. In this case use osl_getNextDirectoryItem() instead.
-
- @param pustrFileURL [in]
- An absolute file URL.
-
- @param pItem [out]
- On success it receives a handle which can be used for subsequent calls to osl_getFileStatus().
- The handle has to be released by a call to osl_releaseDirectoryItem().
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_MFILE too many open files used by the process<br>
- osl_File_E_NFILE too many open files in the system<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_NAMETOOLONG the file name is too long<br>
- osl_File_E_NOTDIR a component of the path prefix of path is not a directory<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_INTR the function call was interrupted<p>
-
- @see osl_releaseDirectoryItem()
- @see osl_acquireDirectoryItem()
- @see osl_getFileStatus()
- @see osl_getNextDirectoryItem()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getDirectoryItem(
- rtl_uString *pustrFileURL,
- oslDirectoryItem *pItem
- );
-
-
-/** Increase the refcount of a directory item handle.
-
- The caller responsible for releasing the directory item handle using osl_releaseDirectoryItem().
-
- @param Item [in]
- A handle received by a call to osl_getDirectoryItem() or osl_getNextDirectoryItem().
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_NOMEM not enough memory for allocating structures<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
-
- @see osl_getDirectoryItem()
- @see osl_getNextDirectoryItem()
- @see osl_releaseDirectoryItem()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_acquireDirectoryItem(
- oslDirectoryItem Item );
-
-
-/** Decrease the refcount of a directory item handle.
-
- Decreases the refcount of a directory item handle.
- If the refcount reaches 0 the data associated with
- this directory item handle will be released.
-
- @param Item [in]
- A handle received by a call to osl_getDirectoryItem() or osl_getNextDirectoryItem().
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_NOMEM not enough memory for allocating structures<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
-
- @see osl_getDirectoryItem()
- @see osl_getNextDirectoryItem()
- @see osl_acquireDirectoryItem()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_releaseDirectoryItem(
- oslDirectoryItem Item );
-
-/** Determine if two directory items point the same underlying file
-
- The comparison is done first by URL, and then by resolving links to
- find the target, and finally by comparing inodes on unix.
-
- @param pItemA [in]
- A directory handle to compare with another handle
-
- @param pItemB [in]
- A directory handle to compare with pItemA
-
- @return
- sal_True: if the items point to an identical resource<br>
- sal_False: if the items point to a different resource, or a fatal error occured<br>
-
- @see osl_getDirectoryItem()
-
- @since LibreOffice 3.6
-*/
-
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_identicalDirectoryItem(
- oslDirectoryItem pItemA,
- oslDirectoryItem pItemB );
-
-/* File types */
-
-typedef enum {
- osl_File_Type_Directory,
- osl_File_Type_Volume,
- osl_File_Type_Regular,
- osl_File_Type_Fifo,
- osl_File_Type_Socket,
- osl_File_Type_Link,
- osl_File_Type_Special,
- osl_File_Type_Unknown
-} oslFileType;
-
-/* File attributes */
-#define osl_File_Attribute_ReadOnly 0x00000001
-#define osl_File_Attribute_Hidden 0x00000002
-#define osl_File_Attribute_Executable 0x00000010
-#define osl_File_Attribute_GrpWrite 0x00000020
-#define osl_File_Attribute_GrpRead 0x00000040
-#define osl_File_Attribute_GrpExe 0x00000080
-#define osl_File_Attribute_OwnWrite 0x00000100
-#define osl_File_Attribute_OwnRead 0x00000200
-#define osl_File_Attribute_OwnExe 0x00000400
-#define osl_File_Attribute_OthWrite 0x00000800
-#define osl_File_Attribute_OthRead 0x00001000
-#define osl_File_Attribute_OthExe 0x00002000
-
-/* Flags specifying which fields to retrieve by osl_getFileStatus */
-
-#define osl_FileStatus_Mask_Type 0x00000001
-#define osl_FileStatus_Mask_Attributes 0x00000002
-#define osl_FileStatus_Mask_CreationTime 0x00000010
-#define osl_FileStatus_Mask_AccessTime 0x00000020
-#define osl_FileStatus_Mask_ModifyTime 0x00000040
-#define osl_FileStatus_Mask_FileSize 0x00000080
-#define osl_FileStatus_Mask_FileName 0x00000100
-#define osl_FileStatus_Mask_FileURL 0x00000200
-#define osl_FileStatus_Mask_LinkTargetURL 0x00000400
-#define osl_FileStatus_Mask_All 0x7FFFFFFF
-#define osl_FileStatus_Mask_Validate 0x80000000
-
-
-typedef
-
-/** Structure containing information about files and directories
-
- @see osl_getFileStatus()
- @see oslFileType
-*/
-
-struct _oslFileStatus {
-/** Must be initialized with the size in bytes of the structure before passing it to any function */
- sal_uInt32 uStructSize;
-/** Determines which members of the structure contain valid data */
- sal_uInt32 uValidFields;
-/** The type of the file (file, directory, volume). */
- oslFileType eType;
-/** File attributes */
- sal_uInt64 uAttributes;
-/** First creation time in nanoseconds since 1/1/1970. Can be the last modify time depending on
- platform or file system. */
- TimeValue aCreationTime;
-/** Last access time in nanoseconds since 1/1/1970. Can be the last modify time depending on
- platform or file system. */
- TimeValue aAccessTime;
-/** Last modify time in nanoseconds since 1/1/1970. */
- TimeValue aModifyTime;
-/** Size in bytes of the file. Zero for directories and volumes. */
- sal_uInt64 uFileSize;
-/** Case correct name of the file. Should be set to zero before calling <code>osl_getFileStatus</code>
- and released after usage. */
- rtl_uString *ustrFileName;
-/** Full URL of the file. Should be set to zero before calling <code>osl_getFileStatus</code>
- and released after usage. */
- rtl_uString *ustrFileURL;
-/** Full URL of the target file if the file itself is a link.
- Should be set to zero before calling <code>osl_getFileStatus</code>
- and released after usage. */
- rtl_uString *ustrLinkTargetURL;
-} oslFileStatus;
-
-
-/** Retrieve information about a single file or directory.
-
- @param Item [in]
- A handle received by a previous call to osl_getDirectoryItem() or osl_getNextDirectoryItem().
-
- @param pStatus [in|out]
- Points to a structure which receives the information of the file or directory
- represented by the handle Item. The member uStructSize has to be initialized to
- sizeof(oslFileStatus) before calling this function.
-
- @param uFieldMask [in]
- Specifies which fields of the structure pointed to by pStatus are of interest to the caller.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_BADF invalid oslDirectoryItem parameter<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_OVERFLOW value too large for defined data type<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_MULTIHOP components of path require hopping to multiple remote machines and the file system does not allow it<br>
- osl_File_E_MFILE too many open files used by the process<br>
- osl_File_E_NFILE too many open files in the system<br>
- osl_File_E_NOSPC no space left on device<br>
- osl_File_E_NXIO no such device or address<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_NOSYS function not implemented<p>
-
- @see osl_getDirectoryItem()
- @see osl_getNextDirectoryItem()
- @see oslFileStatus
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getFileStatus(
- oslDirectoryItem Item, oslFileStatus *pStatus, sal_uInt32 uFieldMask );
-
-
-typedef void *oslVolumeDeviceHandle;
-
-/** Release a volume device handle.
-
- Releases the given oslVolumeDeviceHandle which was acquired by a call to
- osl_getVolumeInformation() or osl_acquireVolumeDeviceHandle().
-
- @param Handle [in]
- An oslVolumeDeviceHandle received by a call to osl_getVolumeInformation().
-
- @return
- osl_File_E_None on success<br>
-
- @todo
- specify all error codes that may be returned
-
- @see osl_acquireVolumeDeviceHandle()
- @see osl_getVolumeInformation()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_releaseVolumeDeviceHandle(
- oslVolumeDeviceHandle Handle );
-
-/** Acquire a volume device handle.
-
- Acquires the given oslVolumeDeviceHandle which was acquired by a call to
- osl_getVolumeInformation(). The caller is responsible for releasing the
- acquired handle by calling osl_releaseVolumeDeviceHandle().
-
- @param Handle [in]
- An oslVolumeDeviceHandle received by a call to osl_getVolumeInformation().
-
- @return
- osl_File_E_None on success<br>
-
- @todo
- specify all error codes that may be returned
-
- @see osl_getVolumeInformation()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_acquireVolumeDeviceHandle(
- oslVolumeDeviceHandle Handle );
-
-
-/** Get the full qualified URL where a device is mounted to.
-
- @param Handle [in]
- An oslVolumeDeviceHandle received by a call to osl_getVolumeInformation().
-
- @param ppustrDirectoryURL [out]
- Receives the full qualified URL where the device is mounted to.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_NXIO no such device or address<br>
- osl_File_E_NODEV no such device<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_FAULT bad address<br>
- osl_FilE_E_INTR function call was interrupted<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_EOVERFLOW value too large for defined data type<br>
-
- @see osl_getVolumeInformation()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getVolumeDeviceMountPath(
- oslVolumeDeviceHandle Handle, rtl_uString **ppustrDirectoryURL);
-
-/* Volume attributes */
-
-#define osl_Volume_Attribute_Removeable 0x00000001L
-#define osl_Volume_Attribute_Remote 0x00000002L
-#define osl_Volume_Attribute_CompactDisc 0x00000004L
-#define osl_Volume_Attribute_FixedDisk 0x00000008L
-#define osl_Volume_Attribute_RAMDisk 0x00000010L
-#define osl_Volume_Attribute_FloppyDisk 0x00000020L
-
-#define osl_Volume_Attribute_Case_Is_Preserved 0x00000040L
-#define osl_Volume_Attribute_Case_Sensitive 0x00000080L
-
-/* Flags specifying which fields to retrieve by osl_getVolumeInfo */
-
-#define osl_VolumeInfo_Mask_Attributes 0x00000001L
-#define osl_VolumeInfo_Mask_TotalSpace 0x00000002L
-#define osl_VolumeInfo_Mask_UsedSpace 0x00000004L
-#define osl_VolumeInfo_Mask_FreeSpace 0x00000008L
-#define osl_VolumeInfo_Mask_MaxNameLength 0x00000010L
-#define osl_VolumeInfo_Mask_MaxPathLength 0x00000020L
-#define osl_VolumeInfo_Mask_FileSystemName 0x00000040L
-#define osl_VolumeInfo_Mask_DeviceHandle 0x00000080L
-#define osl_VolumeInfo_Mask_FileSystemCaseHandling 0x00000100L
-
-typedef
-
-/** Structure containing information about volumes
-
- @see osl_getVolumeInformation()
- @see oslFileType
-*/
-
-struct _oslVolumeInfo {
-/** Must be initialized with the size in bytes of the structure before passing it to any function */
- sal_uInt32 uStructSize;
-/** Determines which members of the structure contain valid data */
- sal_uInt32 uValidFields;
-/** Attributes of the volume (remote and/or removable) */
- sal_uInt32 uAttributes;
-/** Total availiable space on the volume for the current process/user */
- sal_uInt64 uTotalSpace;
-/** Used space on the volume for the current process/user */
- sal_uInt64 uUsedSpace;
-/** Free space on the volume for the current process/user */
- sal_uInt64 uFreeSpace;
-/** Maximum length of file name of a single item */
- sal_uInt32 uMaxNameLength;
-/** Maximum length of a full quallified path in system notation */
- sal_uInt32 uMaxPathLength;
-/** Points to a string that receives the name of the file system type. String should be set to zero before calling <code>osl_getVolumeInformation</code>
- and released after usage. */
- rtl_uString *ustrFileSystemName;
-/** Pointer to handle the receives underlying device. Handle should be set to zero before calling <code>osl_getVolumeInformation</code>*/
- oslVolumeDeviceHandle *pDeviceHandle;
-} oslVolumeInfo;
-
-
-/** Retrieve information about a volume.
-
- Retrieves information about a volume. A volume can either be a mount point, a network
- resource or a drive depending on Operating System and File System. Before calling this
- function osl_getFileStatus() should be called to determine if the type is
- osl_file_Type_Volume.
-
- @param pustrDirectoryURL [in]
- Full qualified URL of the volume
-
- @param pInfo [out]
- On success it receives information about the volume.
-
- @param uFieldMask [in]
- Specifies which members of the structure should be filled
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOTDIR not a directory<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- ols_File_E_FAULT Bad address<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_NOSYS function not implemented<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_INTR function call was interrupted<br>
-
- @see osl_getFileStatus()
- @see oslVolumeInfo
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getVolumeInformation(
- rtl_uString *pustrDirectoryURL,
- oslVolumeInfo *pInfo,
- sal_uInt32 uFieldMask );
-
-typedef void *oslFileHandle;
-
-/* Open flags */
-
-#define osl_File_OpenFlag_Read 0x00000001L
-#define osl_File_OpenFlag_Write 0x00000002L
-#define osl_File_OpenFlag_Create 0x00000004L
-#define osl_File_OpenFlag_NoLock 0x00000008L
-/* larger bit-fields reserved for internal use cf. detail/file.h */
-
-/** Open a regular file.
-
- Open a file. Only regular files can be openend.
-
- @param pustrFileURL [in]
- The full qualified URL of the file to open.
-
- @param pHandle [out]
- On success it receives a handle to the open file.
-
- @param uFlags [in]
- Specifies the open mode.
-
- On Android, if the file path is below the /assets folder, the file
- exists only as a hopefully uncompressed element inside the app
- package (.apk), which has been mapped into memory as a whole by
- the LibreOffice Android bootstrapping code. So files "opened" from
- there aren't actually files in the OS sense.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NAMETOOLONG pathname was too long<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_AGAIN a write lock could not be established<br>
- osl_File_E_NOTDIR not a directory<br>
- osl_File_E_NXIO no such device or address<br>
- osl_File_E_NODEV no such device<br>
- osl_File_E_ROFS read-only file system<br>
- osl_File_E_TXTBSY text file busy<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_NOSPC no space left on device<br>
- osl_File_E_ISDIR is a directory<br>
- osl_File_E_MFILE too many open files used by the process<br>
- osl_File_E_NFILE too many open files in the system<br>
- osl_File_E_DQUOT quota exceeded<br>
- osl_File_E_EXIST file exists<br>
- osl_FilE_E_INTR function call was interrupted<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_EOVERFLOW value too large for defined data type<br>
-
- @see osl_closeFile()
- @see osl_setFilePos()
- @see osl_getFilePos()
- @see osl_readFile()
- @see osl_writeFile()
- @see osl_setFileSize()
- @see osl_getFileSize()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_openFile(
- rtl_uString *pustrFileURL, oslFileHandle *pHandle, sal_uInt32 uFlags );
-
-#define osl_Pos_Absolut 1
-#define osl_Pos_Current 2
-#define osl_Pos_End 3
-
-/** Set the internal position pointer of an open file.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param uHow [in]
- Distance to move the internal position pointer (from uPos).
-
- @param uPos [in]
- Absolute position from the beginning of the file.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_OVERFLOW the resulting file offset would be a value which cannot be represented correctly for regular files<br>
-
- @see osl_openFile()
- @see osl_getFilePos()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_setFilePos(
- oslFileHandle Handle, sal_uInt32 uHow, sal_Int64 uPos ) SAL_WARN_UNUSED_RESULT;
-
-
-/** Retrieve the current position of the internal pointer of an open file.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param pPos [out]
- On success receives the current position of the file pointer.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_OVERFLOW the resulting file offset would be a value which cannot be represented correctly for regular files<br>
-
- @see osl_openFile()
- @see osl_setFilePos()
- @see osl_readFile()
- @see osl_writeFile()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getFilePos(
- oslFileHandle Handle, sal_uInt64 *pPos );
-
-
-/** Set the file size of an open file.
-
- Sets the file size of an open file. The file can be truncated or enlarged by the function.
- The position of the file pointer is not affeced by this function.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param uSize [in]
- New size in bytes.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_OVERFLOW the resulting file offset would be a value which cannot be represented correctly for regular files<br>
-
- @see osl_openFile()
- @see osl_setFilePos()
- @see osl_getFileStatus()
- @see osl_getFileSize()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_setFileSize(
- oslFileHandle Handle, sal_uInt64 uSize );
-
-
-/** Get the file size of an open file.
-
- Gets the file size of an open file.
- The position of the file pointer is not affeced by this function.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param pSize [out]
- Current size in bytes.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_OVERFLOW the resulting file offset would be a value which cannot be represented correctly for regular files<br>
-
- @see osl_openFile()
- @see osl_setFilePos()
- @see osl_getFileStatus()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getFileSize(
- oslFileHandle Handle, sal_uInt64 *pSize );
-
-
-/** Map flags.
-
- @since UDK 3.2.10
- */
-#define osl_File_MapFlag_RandomAccess ((sal_uInt32)(0x1))
-
-/** Map flag denoting that the mapped address space will be accessed by the
- process soon (and it is advantageous for the operating system to already
- start paging in the data).
-
- @since UDK 3.2.12
- */
-#define osl_File_MapFlag_WillNeed ((sal_uInt32)(0x2))
-
-/** Map a shared file into memory.
-
- Don't know what the "shared" is supposed to mean there? Also,
- obviously this API can be used to map *part* of a file into
- memory, and different parts can be mapped separately even.
-
- On Android, if the Handle refers to a file that is actually inside
- the app package (.apk zip archive), no new mapping is created,
- just a pointer to the file inside the already mapped .apk is
- returned.
-
- @since UDK 3.2.10
- */
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_mapFile (
- oslFileHandle Handle,
- void** ppAddr,
- sal_uInt64 uLength,
- sal_uInt64 uOffset,
- sal_uInt32 uFlags
-);
-
-
-#ifndef ANDROID
-
-/** Unmap a shared file from memory.
-
- Ditto here, why do we need to mention "shared"?
-
- This function just won't work on Android in general where for
- (uncompressed) files inside the .apk, per SDK conventions in the
- /assets folder, osl_mapFile() returns a pointer to the file inside
- the already by LibreOffice Android-specific bootstrapping code
- mmapped .apk archive. We can't go and randomly munmap part of the
- .apk archive. So this function is not present on Android.
-
- @since UDK 3.2.10
- */
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_unmapFile (
- void* pAddr,
- sal_uInt64 uLength
-);
-
-#endif
-
-/** Unmap a file segment from memory.
-
- Like osl_unmapFile(), but takes also the oslFileHandle argument
- passed to osl_mapFile() when creating this mapping.
-
- On Android, for files below /assets, i.e. located inside the app
- archive (.apk), this won't actually unmap anything; all the .apk
- stays mapped.
-
- @since UDK 3.6
- */
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_unmapMappedFile (
- oslFileHandle Handle,
- void* pAddr,
- sal_uInt64 uLength
-);
-
-
-/** Read a number of bytes from a file.
-
- Reads a number of bytes from a file. The internal file pointer is
- increased by the number of bytes read.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param pBuffer [out]
- Points to a buffer which receives data. The buffer must be large enough
- to hold uBytesRequested bytes.
-
- @param uBytesRequested [in]
- Number of bytes which should be retrieved.
-
- @param pBytesRead [out]
- On success the number of bytes which have actually been retrieved.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_ISDIR is a directory<br>
- osl_File_E_BADF bad file<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_AGAIN operation would block<br>
- osl_File_E_NOLINK link has been severed<br>
-
- @see osl_openFile()
- @see osl_writeFile()
- @see osl_readLine()
- @see osl_setFilePos()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_readFile(
- oslFileHandle Handle, void *pBuffer, sal_uInt64 uBytesRequested, sal_uInt64 *pBytesRead );
-
-
-/** Test if the end of a file is reached.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param pIsEOF [out]
- Points to a variable that receives the end-of-file status.
-
- @return
- osl_File_E_None on success <br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_ISDIR is a directory<br>
- osl_File_E_BADF bad file<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_AGAIN operation would block<br>
- osl_File_E_NOLINK link has been severed<p>
-
- @see osl_openFile()
- @see osl_readFile()
- @see osl_readLine()
- @see osl_setFilePos()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_isEndOfFile(
- oslFileHandle Handle, sal_Bool *pIsEOF );
-
-
-/** Write a number of bytes to a file.
-
- Writes a number of bytes to a file.
- The internal file pointer is increased by the number of bytes read.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param pBuffer [in]
- Points to a buffer which contains the data.
-
- @param uBytesToWrite [in]
- Number of bytes which should be written.
-
- @param pBytesWritten [out]
- On success the number of bytes which have actually been written.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_FBIG file too large<br>
- osl_File_E_DQUOT quota exceeded<p>
- osl_File_E_AGAIN operation would block<br>
- osl_File_E_BADF bad file<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_IO on I/O errosr<br>
- osl_File_E_NOLCK no record locks available<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_NOSPC no space left on device<br>
- osl_File_E_NXIO no such device or address<br>
-
- @see osl_openFile()
- @see osl_readFile()
- @see osl_setFilePos()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_writeFile(
- oslFileHandle Handle, const void *pBuffer, sal_uInt64 uBytesToWrite, sal_uInt64 *pBytesWritten );
-
-/** Read a number of bytes from a specified offset in a file.
-
- The current position of the internal file pointer may or may not be changed.
-
- @since UDK 3.2.10
- */
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_readFileAt(
- oslFileHandle Handle,
- sal_uInt64 uOffset,
- void* pBuffer,
- sal_uInt64 uBytesRequested,
- sal_uInt64* pBytesRead
-);
-
-
-/** Write a number of bytes to a specified offset in a file.
-
- The current position of the internal file pointer may or may not be changed.
-
- @since UDK 3.2.10
- */
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_writeFileAt(
- oslFileHandle Handle,
- sal_uInt64 uOffset,
- const void* pBuffer,
- sal_uInt64 uBytesToWrite,
- sal_uInt64* pBytesWritten
-);
-
-
-/** Read a line from a file.
-
- Reads a line from a file. The new line delimiter is NOT returned!
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param ppSequence [in/out]
- A pointer pointer to a sal_Sequence that will hold the line read on success.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_ISDIR is a directory<br>
- osl_File_E_BADF bad file<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_AGAIN operation would block<br>
- osl_File_E_NOLINK link has been severed<p>
-
- @see osl_openFile()
- @see osl_readFile()
- @see osl_writeFile()
- @see osl_setFilePos()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_readLine(
- oslFileHandle Handle, sal_Sequence** ppSequence );
-
-/** Synchronize the memory representation of a file with that on the physical medium.
-
- The function ensures that all modified data and attributes of the file associated with
- the given file handle have been written to the physical medium.
- In case the hard disk has a write cache enabled, the data may not really be on
- permanent storage when osl_syncFile returns.
-
- @param Handle
- [in] Handle to a file received by a previous call to osl_openFile().
-
- @return
- <dl>
- <dt>osl_File_E_None</dt>
- <dd>On success</dd>
- <dt>osl_File_E_INVAL</dt>
- <dd>The value of the input parameter is invalid</dd>
- </dl>
- <br><p><strong>In addition to these error codes others may occur as well, for instance:</strong></p><br>
- <dl>
- <dt>osl_File_E_BADF</dt>
- <dd>The file associated with the given file handle is not open for writing</dd>
- <dt>osl_File_E_IO</dt>
- <dd>An I/O error occurred</dd>
- <dt>osl_File_E_NOSPC</dt>
- <dd>There is no enough space on the target device</dd>
- <dt>osl_File_E_ROFS</dt>
- <dd>The file associated with the given file handle is located on a read only file system</dd>
- <dt>osl_File_E_TIMEDOUT</dt>
- <dd>A remote connection timed out. This may happen when a file is on a remote location</dd>
- </dl>
-
- @see osl_openFile()
- @see osl_writeFile()
-*/
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_syncFile( oslFileHandle Handle );
-
-/** Close an open file.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_BADF Bad file<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_NOSPC no space left on device<br>
- osl_File_E_IO on I/O errors<br>
-
- @see osl_openFile()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_closeFile( oslFileHandle Handle );
-
-
-/** Create a directory.
-
- @param pustrDirectoryURL [in]
- Full qualified URL of the directory to create.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_EXIST file exists<br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_NOTDIR not a directory<br>
- osl_File_E_ROFS read-only file system<br>
- osl_File_E_NOSPC no space left on device<br>
- osl_File_E_DQUOT quota exceeded<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_FAULT bad address<br>
- osl_FileE_IO on I/O errors<br>
- osl_File_E_MLINK too many links<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
-
- @see osl_removeDirectory()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_createDirectory( rtl_uString* pustrDirectoryURL );
-
-
-/** Remove an empty directory.
-
- @param pustrDirectoryURL [in]
- Full qualified URL of the directory.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_PERM operation not permitted<br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_NOTDIR not a directory<br>
- osl_File_E_NOTEMPTY directory not empty<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_BUSY device or resource busy<br>
- osl_File_E_ROFS read-only file system<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_BUSY device or resource busy<br>
- osl_File_E_EXIST file exists<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
-
- @see osl_createDirectory()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_removeDirectory( rtl_uString* pustrDirectoryURL );
-
-/** Function pointer representing a function that will be called by osl_createDirectoryPath
- if a directory has been created.
-
- To avoid unpredictable results the callee must not access the directory whose
- creation is just notified.
-
- @param pData
- [in] User specified data given in osl_createDirectoryPath.
-
- @param aDirectoryUrl
- [in] The absolute file URL of the directory that was just created by
- osl_createDirectoryPath.
-
- @see osl_createDirectoryPath
-*/
-typedef void (SAL_CALL *oslDirectoryCreationCallbackFunc)(void* pData, rtl_uString* aDirectoryUrl);
-
-/** Create a directory path.
-
- The osl_createDirectoryPath function creates a specified directory path.
- All nonexisting sub directories will be created.
- <p><strong>PLEASE NOTE:</strong> You cannot rely on getting the error code
- osl_File_E_EXIST for existing directories. Programming against this error
- code is in general a strong indication of a wrong usage of osl_createDirectoryPath.</p>
-
- @param aDirectoryUrl
- [in] The absolute file URL of the directory path to create.
- A relative file URL will not be accepted.
-
- @param aDirectoryCreationCallbackFunc
- [in] Pointer to a function that will be called synchronously
- for each sub directory that was created. The value of this
- parameter may be NULL, in this case notifications will not be
- sent.
-
- @param pData
- [in] User specified data to be passed to the directory creation
- callback function. The value of this parameter may be arbitrary
- and will not be interpreted by osl_createDirectoryPath.
-
- @return
- <dl>
- <dt>osl_File_E_None</dt>
- <dd>On success</dd>
- <dt>osl_File_E_INVAL</dt>
- <dd>The format of the parameters was not valid</dd>
- <dt>osl_File_E_ACCES</dt>
- <dd>Permission denied</dd>
- <dt>osl_File_E_EXIST</dt>
- <dd>The final node of the specified directory path already exist</dd>
- <dt>osl_File_E_NAMETOOLONG</dt>
- <dd>The name of the specified directory path exceeds the maximum allowed length</dd>
- <dt>osl_File_E_NOTDIR</dt>
- <dd>A component of the specified directory path already exist as file in any part of the directory path</dd>
- <dt>osl_File_E_ROFS</dt>
- <dd>Read-only file system</dd>
- <dt>osl_File_E_NOSPC</dt>
- <dd>No space left on device</dd>
- <dt>osl_File_E_DQUOT</dt>
- <dd>Quota exceeded</dd>
- <dt>osl_File_E_FAULT</dt>
- <dd>Bad address</dd>
- <dt>osl_File_E_IO</dt>
- <dd>I/O error</dd>
- <dt>osl_File_E_LOOP</dt>
- <dd>Too many symbolic links encountered</dd>
- <dt>osl_File_E_NOLINK</dt>
- <dd>Link has been severed</dd>
- <dt>osl_File_E_invalidError</dt>
- <dd>An unknown error occurred</dd>
- </dl>
-
- @see oslDirectoryCreationFunc
- @see oslFileError
- @see osl_createDirectory
-*/
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_createDirectoryPath(
- rtl_uString* aDirectoryUrl,
- oslDirectoryCreationCallbackFunc aDirectoryCreationCallbackFunc,
- void* pData);
-
-/** Remove a regular file.
-
- @param pustrFileURL [in]
- Full qualified URL of the file to remove.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_PERM operation not permitted<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_ISDIR is a directory<br>
- osl_File_E_ROFS read-only file system<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_BUSY device or resource busy<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_TXTBSY text file busy<br>
-
- @see osl_openFile()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_removeFile(
- rtl_uString* pustrFileURL );
-
-
-/** Copy a file to a new destination.
-
- Copies a file to a new destination. Copies only files not directories.
- No assumptions should be made about preserving attributes or file time.
-
- @param pustrSourceFileURL [in]
- Full qualified URL of the source file.
-
- @param pustrDestFileURL [in]
- Full qualified URL of the destination file. A directory is NOT a valid destination file!
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_PERM operation not permitted<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_ISDIR is a directory<br>
- osl_File_E_ROFS read-only file system<p>
-
- @see osl_moveFile()
- @see osl_removeFile()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_copyFile(
- rtl_uString* pustrSourceFileURL, rtl_uString *pustrDestFileURL );
-
-
-/** Move a file or directory to a new destination or renames it.
-
- Moves a file or directory to a new destination or renames it.
- File time and attributes are preserved.
-
- @param pustrSourceFileURL [in]
- Full qualified URL of the source file.
-
- @param pustrDestFileURL [in]
- Full qualified URL of the destination file. An existing directory is NOT a valid destination !
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_PERM operation not permitted<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_ROFS read-only file system<br>
-
- @see osl_copyFile()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_moveFile(
- rtl_uString* pustrSourceFileURL, rtl_uString *pustrDestFileURL );
-
-
-/** Determine a valid unused canonical name for a requested name.
-
- Determines a valid unused canonical name for a requested name.
- Depending on the Operating System and the File System the illegal characters are replaced by valid ones.
- If a file or directory with the requested name already exists a new name is generated following
- the common rules on the actual Operating System and File System.
-
- @param pustrRequestedURL [in]
- Requested name of a file or directory.
-
- @param ppustrValidURL [out]
- On success receives a name which is unused and valid on the actual Operating System and
- File System.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
-
- @see osl_getFileStatus()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getCanonicalName(
- rtl_uString *pustrRequestedURL, rtl_uString **ppustrValidURL);
-
-
-/** Convert a path relative to a given directory into an full qualified file URL.
-
- Convert a path relative to a given directory into an full qualified file URL.
- The function resolves symbolic links if possible and path ellipses, so on success
- the resulting absolute path is fully resolved.
-
- @param pustrBaseDirectoryURL [in]
- Base directory URL to which the relative path is related to.
-
- @param pustrRelativeFileURL [in]
- An URL of a file or directory relative to the directory path specified by pustrBaseDirectoryURL
- or an absolute path.
- If pustrRelativeFileURL denotes an absolute path pustrBaseDirectoryURL will be ignored.
-
- @param ppustrAbsoluteFileURL [out]
- On success it receives the full qualified absoulte file URL.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_NOTDIR not a directory<br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_OVERFLOW value too large for defined data type<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
-
- @see osl_getFileStatus()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getAbsoluteFileURL(
- rtl_uString* pustrBaseDirectoryURL,
- rtl_uString *pustrRelativeFileURL,
- rtl_uString **ppustrAbsoluteFileURL );
-
-
-/** Convert a system dependend path into a file URL.
-
- @param pustrSystemPath [in]
- A System dependent path of a file or directory.
-
- @param ppustrFileURL [out]
- On success it receives the file URL.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
-
- @see osl_getSystemPathFromFileURL()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getFileURLFromSystemPath(
- rtl_uString *pustrSystemPath, rtl_uString **ppustrFileURL);
-
-
-/** Searche a full qualified system path or a file URL.
-
- @param pustrFileName [in]
- A system dependent path, a file URL, a file or relative directory.
-
- @param pustrSearchPath [in]
- A list of system paths, in which a given file has to be searched. The Notation of a path list is
- system dependend, e.g. on UNIX system "/usr/bin:/bin" and on Windows "C:\BIN;C:\BATCH".
- These paths are only for the search of a file or a relative path, otherwise it will be ignored.
- If pustrSearchPath is NULL or while using the search path the search failed, the function searches for
- a matching file in all system directories and in the directories listed in the PATH environment
- variable.
- The value of an environment variable should be used (e.g. LD_LIBRARY_PATH) if the caller is not
- aware of the Operating System and so doesn't know which path list delimiter to use.
-
- @param ppustrFileURL [out]
- On success it receives the full qualified file URL.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOTDIR not a directory<br>
- osl_File_E_NOENT no such file or directory not found<br>
-
- @see osl_getFileURLFromSystemPath()
- @see osl_getSystemPathFromFileURL()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_searchFileURL(
- rtl_uString *pustrFileName, rtl_uString *pustrSearchPath, rtl_uString **ppustrFileURL );
-
-
-/** Convert a file URL into a system dependend path.
-
- @param pustrFileURL [in]
- A File URL.
-
- @param ppustrSystemPath [out]
- On success it receives the system path.
-
- @return
- osl_File_E_None on success
- osl_File_E_INVAL the format of the parameters was not valid
-
- @see osl_getFileURLFromSystemPath()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getSystemPathFromFileURL(
- rtl_uString *pustrFileURL, rtl_uString **ppustrSystemPath);
-
-
-/** Function pointer representing the function called back from osl_abbreviateSystemPath
-
- @param ustrText [in]
- Text to calculate the width for
-
- @return
- The width of the text specified by ustrText, e.g. it can return the width in pixel
- or the width in character count.
-
- @see osl_abbreviateSystemPath()
-*/
-
-typedef sal_uInt32 (SAL_CALL *oslCalcTextWidthFunc)( rtl_uString *ustrText );
-
-
-/** Abbreviate a system notation path.
-
- @param ustrSystemPath [in]
- The full system path to abbreviate
-
- @param pustrCompacted [out]
- Receives the compacted system path on output
-
- @param pCalcWidth [in]
- Function ptr that calculates the width of a string. Can be zero.
-
- @param uMaxWidth [in]
- Maximum width allowed that is retunrned from pCalcWidth.
- If pCalcWidth is zero the character count is assumed as width.
-
- @return
- osl_File_E_None on success<br>
-
- @see oslCalcTextWidthFunc
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_abbreviateSystemPath(
- rtl_uString *ustrSystemPath,
- rtl_uString **pustrCompacted,
- sal_uInt32 uMaxWidth,
- oslCalcTextWidthFunc pCalcWidth );
-
-
-/** Set file attributes.
-
- @param pustrFileURL [in]
- The full qualified file URL.
-
- @param uAttributes [in]
- Attributes of the file to be set.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
-
- @see osl_getFileStatus()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_setFileAttributes(
- rtl_uString *pustrFileURL, sal_uInt64 uAttributes );
-
-
-/** Set the file time.
-
- @param pustrFileURL [in]
- The full qualified URL of the file.
-
- @param aCreationTime [in]
- Creation time of the given file.
-
- @param aLastAccessTime [in]
- Time of the last access of the given file.
-
- @param aLastWriteTime [in]
- Time of the last modifying of the given file.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOENT no such file or directory not found<br>
-
- @see osl_getFileStatus()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_setFileTime(
- rtl_uString *pustrFileURL,
- const TimeValue *aCreationTime,
- const TimeValue *aLastAccessTime,
- const TimeValue *aLastWriteTime);
-
-
-/** Retrieves the file URL of the system's temporary directory path
-
- @param[out] pustrTempDirURL
- On success receives the URL of system's temporary directory path.
-
- @return
- osl_File_E_None on success
- osl_File_E_NOENT no such file or directory not found
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getTempDirURL(
- rtl_uString **pustrTempDirURL );
-
-
-/** Creates a temporary file in the directory provided by the caller or the
- directory returned by osl_getTempDirURL.
-
- Creates a temporary file in the directory provided by the caller or the
- directory returned by osl_getTempDirURL.
- Under UNIX Operating Systems the file will be created with read and write
- access for the user exclusively.
- If the caller requests only a handle to the open file but not the name of
- it, the file will be automatically removed on close else the caller is
- responsible for removing the file on success.
-
- Description of the different pHandle, ppustrTempFileURL parameter combinations.
- pHandle is 0 and ppustrTempDirURL is 0 - this combination is invalid
- pHandle is not 0 and ppustrTempDirURL is 0 - a handle to the open file
- will be returned on success and the file will be automatically removed on close.
- pHandle is 0 and ppustrTempDirURL is not 0 - the name of the file will be returned,
- the caller is responsible for opening, closing and removing the file.
- pHandle is not 0 and ppustrTempDirURL is not 0 - a handle to the open file as well as
- the file name will be returned, the caller is responsible for closing and removing
- the file.
-
- @param pustrDirectoryURL [in]
- Specifies the full qualified URL where the temporary file should be created.
- If pustrDirectoryURL is 0 the path returned by osl_getTempDirURL will be used.
-
- @param pHandle [out]
- On success receives a handle to the open file. If pHandle is 0 the file will
- be closed on return, in this case ppustrTempFileURL must not be 0.
-
- @param ppustrTempFileURL [out]
- On success receives the full qualified URL of the temporary file.
- If ppustrTempFileURL is 0 the file will be automatically removed on close,
- in this case pHandle must not be 0.
- If ppustrTempFileURL is not 0 the caller receives the name of the created
- file and is responsible for removing the file, in this case
- *ppustrTempFileURL must be 0 or must point to a valid rtl_uString.
-
- @return
- osl_File_E_None on success
- osl_File_E_INVAL the format of the parameter is invalid
- osl_File_E_NOMEM not enough memory for allocating structures
- osl_File_E_ACCES Permission denied
- osl_File_E_NOENT No such file or directory
- osl_File_E_NOTDIR Not a directory
- osl_File_E_ROFS Read-only file system
- osl_File_E_NOSPC No space left on device
- osl_File_E_DQUOT Quota exceeded
-
- @see osl_getTempDirURL()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_createTempFile(
- rtl_uString* pustrDirectoryURL,
- oslFileHandle* pHandle,
- rtl_uString** ppustrTempFileURL);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OSL_FILE_H_ */
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/file.hxx b/sal/inc/osl/file.hxx
deleted file mode 100644
index ee52cd570840..000000000000
--- a/sal/inc/osl/file.hxx
+++ /dev/null
@@ -1,1979 +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 _OSL_FILE_HXX_
-#define _OSL_FILE_HXX_
-
-#include "sal/config.h"
-
-#include <string.h>
-
-#include <cassert>
-
-#include <osl/time.h>
-#include <rtl/ustring.hxx>
-
-#include <osl/file.h>
-#include <rtl/byteseq.hxx>
-
-#include <stdio.h>
-
-namespace osl
-{
-
-
-// -----------------------------------------------------------------------------
-/** Base class for all File System specific objects.
-
- @see Directory
- @see DirectoryItem
- @see File
- */
-
-class FileBase
-{
-public:
-
- enum RC {
- E_None = osl_File_E_None,
- E_PERM = osl_File_E_PERM,
- E_NOENT = osl_File_E_NOENT,
- E_SRCH = osl_File_E_SRCH,
- E_INTR = osl_File_E_INTR,
- E_IO = osl_File_E_IO,
- E_NXIO = osl_File_E_NXIO,
- E_2BIG = osl_File_E_2BIG,
- E_NOEXEC = osl_File_E_NOEXEC,
- E_BADF = osl_File_E_BADF,
- E_CHILD = osl_File_E_CHILD,
- E_AGAIN = osl_File_E_AGAIN,
- E_NOMEM = osl_File_E_NOMEM,
- E_ACCES = osl_File_E_ACCES,
- E_FAULT = osl_File_E_FAULT,
- E_BUSY = osl_File_E_BUSY,
- E_EXIST = osl_File_E_EXIST,
- E_XDEV = osl_File_E_XDEV,
- E_NODEV = osl_File_E_NODEV,
- E_NOTDIR = osl_File_E_NOTDIR,
- E_ISDIR = osl_File_E_ISDIR,
- E_INVAL = osl_File_E_INVAL,
- E_NFILE = osl_File_E_NFILE,
- E_MFILE = osl_File_E_MFILE,
- E_NOTTY = osl_File_E_NOTTY,
- E_FBIG = osl_File_E_FBIG,
- E_NOSPC = osl_File_E_NOSPC,
- E_SPIPE = osl_File_E_SPIPE,
- E_ROFS = osl_File_E_ROFS,
- E_MLINK = osl_File_E_MLINK,
- E_PIPE = osl_File_E_PIPE,
- E_DOM = osl_File_E_DOM,
- E_RANGE = osl_File_E_RANGE,
- E_DEADLK = osl_File_E_DEADLK,
- E_NAMETOOLONG = osl_File_E_NAMETOOLONG,
- E_NOLCK = osl_File_E_NOLCK,
- E_NOSYS = osl_File_E_NOSYS,
- E_NOTEMPTY = osl_File_E_NOTEMPTY,
- E_LOOP = osl_File_E_LOOP,
- E_ILSEQ = osl_File_E_ILSEQ,
- E_NOLINK = osl_File_E_NOLINK,
- E_MULTIHOP = osl_File_E_MULTIHOP,
- E_USERS = osl_File_E_USERS,
- E_OVERFLOW = osl_File_E_OVERFLOW,
- E_NOTREADY = osl_File_E_NOTREADY,
- E_invalidError = osl_File_E_invalidError, /* unmapped error: always last entry in enum! */
- E_TIMEDOUT = osl_File_E_TIMEDOUT,
- E_NETWORK = osl_File_E_NETWORK
- };
-
-
-public:
-
- /** Determine a valid unused canonical name for a requested name.
-
- Determines a valid unused canonical name for a requested name.
- Depending on the Operating System and the File System the illegal characters are replaced by valid ones.
- If a file or directory with the requested name already exists a new name is generated following
- the common rules on the actual Operating System and File System.
-
- @param ustrRequestedURL [in]
- Requested name of a file or directory.
-
- @param ustrValidURL [out]
- On success receives a name which is unused and valid on the actual Operating System and
- File System.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
-
- @see DirectoryItem::getFileStatus()
- */
-
- static inline RC getCanonicalName( const ::rtl::OUString& ustrRequestedURL, ::rtl::OUString& ustrValidURL )
- {
- return (RC) osl_getCanonicalName( ustrRequestedURL.pData, &ustrValidURL.pData );
- }
-
- /** Convert a path relative to a given directory into an full qualified file URL.
-
- Convert a path relative to a given directory into an full qualified file URL.
- The function resolves symbolic links if possible and path ellipses, so on success
- the resulting absolute path is fully resolved.
-
- @param ustrBaseDirectoryURL [in]
- Base directory URL to which the relative path is related to.
-
- @param ustrRelativeFileURL [in]
- An URL of a file or directory relative to the directory path specified by ustrBaseDirectoryURL
- or an absolute path.
- If ustrRelativeFileURL denotes an absolute path ustrBaseDirectoryURL will be ignored.
-
- @param ustrAbsoluteFileURL [out]
- On success it receives the full qualified absoulte file URL.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_NOMEM not enough memory for allocating structures
- E_NOTDIR not a directory
- E_ACCES permission denied
- E_NOENT no such file or directory
- E_NAMETOOLONG file name too long
- E_OVERFLOW value too large for defined data type
- E_FAULT bad address
- E_INTR function call was interrupted
- E_LOOP too many symbolic links encountered
- E_MULTIHOP multihop attempted
- E_NOLINK link has been severed
-
- @see DirectoryItem::getFileStatus()
- */
-
- static inline RC getAbsoluteFileURL( const ::rtl::OUString& ustrBaseDirectoryURL, const ::rtl::OUString& ustrRelativeFileURL, ::rtl::OUString& ustrAbsoluteFileURL )
- {
- return (RC) osl_getAbsoluteFileURL( ustrBaseDirectoryURL.pData, ustrRelativeFileURL.pData, &ustrAbsoluteFileURL.pData );
- }
-
- /** Convert a file URL into a system dependend path.
-
- @param ustrFileURL [in]
- A File URL.
-
- @param ustrSystemPath [out]
- On success it receives the system path.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
-
- @see getFileURLFromSystemPath()
- */
-
- static inline RC getSystemPathFromFileURL( const ::rtl::OUString& ustrFileURL, ::rtl::OUString& ustrSystemPath )
- {
- return (RC) osl_getSystemPathFromFileURL( ustrFileURL.pData, &ustrSystemPath.pData );
- }
-
- /** Convert a system dependend path into a file URL.
-
- @param ustrSystemPath [in]
- A System dependent path of a file or directory.
-
- @param ustrFileURL [out]
- On success it receives the file URL.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
-
- @see getSystemPathFromFileURL()
- */
-
- static inline RC getFileURLFromSystemPath( const ::rtl::OUString& ustrSystemPath, ::rtl::OUString& ustrFileURL )
- {
- return (RC) osl_getFileURLFromSystemPath( ustrSystemPath.pData, &ustrFileURL.pData );
- }
-
- /** Searche a full qualified system path or a file URL.
-
- @param ustrFileName [in]
- A system dependent path, a file URL, a file or relative directory
-
- @param ustrSearchPath [in]
- A list of system paths, in which a given file has to be searched. The Notation of a path list is
- system dependend, e.g. on UNIX system "/usr/bin:/bin" and on Windows "C:\BIN;C:\BATCH".
- These paths are only for the search of a file or a relative path, otherwise it will be ignored.
- If ustrSearchPath is NULL or while using the search path the search failed, the function searches for
- a matching file in all system directories and in the directories listed in the PATH environment
- variable.
- The value of an environment variable should be used (e.g. LD_LIBRARY_PATH) if the caller is not
- aware of the Operating System and so doesn't know which path list delimiter to use.
-
- @param ustrFileURL [out]
- On success it receives the full qualified file URL.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_NOTDIR not a directory
- E_NOENT no such file or directory not found
-
- @see getFileURLFromSystemPath()
- @see getSystemPathFromFileURL()
- */
-
- static inline RC searchFileURL( const ::rtl::OUString& ustrFileName, const ::rtl::OUString& ustrSearchPath, ::rtl::OUString& ustrFileURL )
- {
- return (RC) osl_searchFileURL( ustrFileName.pData, ustrSearchPath.pData, &ustrFileURL.pData );
- }
-
- /** Retrieves the file URL of the system's temporary directory path.
-
- @param[out] ustrTempDirURL
- On success receives the URL of system's temporary directory path.
-
- @return
- E_None on success
- E_NOENT no such file or directory not found
- */
-
- static inline RC getTempDirURL( ::rtl::OUString& ustrTempDirURL )
- {
- return (RC) osl_getTempDirURL( &ustrTempDirURL.pData );
- }
-
- /** Creates a temporary file in the directory provided by the caller or the
- directory returned by getTempDirURL.
- Under UNIX Operating Systems the file will be created with read and write
- access for the user exclusively.
- If the caller requests only a handle to the open file but not the name of
- it, the file will be automatically removed on close else the caller is
- responsible for removing the file on success.<br><br>
-
- @param pustrDirectoryURL [in]
- Specifies the full qualified URL where the temporary file should be created.
- If pustrDirectoryURL is 0 the path returned by osl_getTempDirURL will be used.
-
- @param pHandle [out]
- On success receives a handle to the open file.
- If pHandle is 0 the file will be closed on return, in this case
- pustrTempFileURL must not be 0.
-
- @param pustrTempFileURL [out]
- On success receives the full qualified URL of the temporary file.
- If pustrTempFileURL is 0 the file will be automatically removed
- on close, in this case pHandle must not be 0.
- If pustrTempFileURL is not 0 the caller receives the name of the
- created file and is responsible for removing the file.
-
- Description of the different pHandle, ppustrTempFileURL parameter combinations.
- pHandle is 0 and pustrTempDirURL is 0 - this combination is invalid<br>
- pHandle is not 0 and pustrTempDirURL is 0 - a handle to the open file
- will be returned on success and the file will be automatically removed on close<br>
- pHandle is 0 and pustrTempDirURL is not 0 - the name of the file will be
- returned, the caller is responsible for opening, closing and removing the file.<br>
- pHandle is not 0 and pustrTempDirURL is not 0 - a handle to the open file as well as
- the file name will be returned, the caller is responsible for closing and removing
- the file.<br>
-
- @return
- E_None on success
- E_INVAL the format of the parameter is invalid
- E_NOMEM not enough memory for allocating structures
- E_ACCES Permission denied
- E_NOENT No such file or directory
- E_NOTDIR Not a directory
- E_ROFS Read-only file system
- E_NOSPC No space left on device
- E_DQUOT Quota exceeded
-
- @see getTempDirURL()
- */
-
- static inline RC createTempFile(
- ::rtl::OUString* pustrDirectoryURL,
- oslFileHandle* pHandle,
- ::rtl::OUString* pustrTempFileURL)
- {
- rtl_uString* pustr_dir_url = pustrDirectoryURL ? pustrDirectoryURL->pData : 0;
- rtl_uString** ppustr_tmp_file_url = pustrTempFileURL ? &pustrTempFileURL->pData : 0;
-
- return (RC) osl_createTempFile(pustr_dir_url, pHandle, ppustr_tmp_file_url);
- }
-};
-
-
-// -----------------------------------------------------------------------------
-/** The VolumeDevice class.
-
- @see VolumeInfo
-*/
-
-class VolumeDevice : public FileBase
-{
- oslVolumeDeviceHandle _aHandle;
-
-public:
-
- /** Constructor.
- */
-
- VolumeDevice() : _aHandle( NULL )
- {
- }
-
- /** Copy constructor.
-
- @param rDevice
- The other volume device.
- */
-
- VolumeDevice( const VolumeDevice & rDevice )
- {
- _aHandle = rDevice._aHandle;
- if ( _aHandle )
- osl_acquireVolumeDeviceHandle( _aHandle );
- }
-
- /** Destructor.
- */
-
- ~VolumeDevice()
- {
- if ( _aHandle )
- osl_releaseVolumeDeviceHandle( _aHandle );
- }
-
- /** Assignment operator.
-
- @param rDevice
- The other volume device.
- */
-
- inline VolumeDevice & operator =( const VolumeDevice & rDevice )
- {
- oslVolumeDeviceHandle newHandle = rDevice._aHandle;
-
- if ( newHandle )
- osl_acquireVolumeDeviceHandle( newHandle );
-
- if ( _aHandle )
- osl_releaseVolumeDeviceHandle( _aHandle );
-
- _aHandle = newHandle;
-
- return *this;
- }
-
- /** Get the full qualified URL where a device is mounted to.
-
- @return
- The full qualified URL where the device is mounted to.
- */
- inline rtl::OUString getMountPath()
- {
- rtl::OUString aPath;
- osl_getVolumeDeviceMountPath( _aHandle, &aPath.pData );
- return aPath;
- }
-
- friend class VolumeInfo;
-};
-
-// -----------------------------------------------------------------------------
-
-class Directory;
-
-/** The VolumeInfo class.
-
- Neither copy nor assignment is allowed for this class.
-
- @see Directory::getVolumeInfo
-*/
-
-
-class VolumeInfo
-{
- oslVolumeInfo _aInfo;
- sal_uInt32 _nMask;
- VolumeDevice _aDevice;
-
- /** Copy constructor.
- */
-
- VolumeInfo( VolumeInfo& );
-
- /** Assginment operator.
- */
-
- VolumeInfo& operator = ( VolumeInfo& );
-
-public:
-
- /** Constructor.
-
- @param nMask
- Set of flags decribing the demanded information.
- */
-
- VolumeInfo( sal_uInt32 nMask ): _nMask( nMask )
- {
- _aInfo.uStructSize = sizeof( oslVolumeInfo );
- memset( &_aInfo.uValidFields, 0, sizeof( oslVolumeInfo ) - sizeof( sal_uInt32 ) );
- _aInfo.pDeviceHandle = &_aDevice._aHandle;
- }
-
- /** Destructor.
- */
-
- ~VolumeInfo()
- {
- if( _aInfo.ustrFileSystemName )
- rtl_uString_release( _aInfo.ustrFileSystemName );
- }
-
- /** Check if specified fields are valid.
-
- @param nMask
- Set of flags for the fields to check.
-
- @return sal_True if all fields are valid else sal_False.
- */
-
- inline sal_Bool isValid( sal_uInt32 nMask ) const
- {
- return ( nMask & _aInfo.uValidFields ) == nMask;
- }
-
- /** Check the remote flag.
-
- @return
- sal_True if Attributes are valid and the volume is remote else sal_False.
- */
-
- inline sal_Bool getRemoteFlag() const
- {
- return 0 != (_aInfo.uAttributes & osl_Volume_Attribute_Remote);
- }
-
- /** Check the removeable flag.
-
- @return
- sal_True if attributes are valid and the volume is removable else sal_False.
- */
-
- inline sal_Bool getRemoveableFlag() const
- {
- return 0 != (_aInfo.uAttributes & osl_Volume_Attribute_Removeable);
- }
-
- /** Check the compact disc flag.
-
- @return
- sal_True if attributes are valid and the volume is a CDROM else sal_False.
- */
-
- inline sal_Bool getCompactDiscFlag() const
- {
- return 0 != (_aInfo.uAttributes & osl_Volume_Attribute_CompactDisc);
- }
-
- /** Check the floppy disc flag.
-
- @return
- sal_True if attributes are valid and the volume is a floppy disk else sal_False.
- */
-
- inline sal_Bool getFloppyDiskFlag() const
- {
- return 0 != (_aInfo.uAttributes & osl_Volume_Attribute_FloppyDisk);
- }
-
- /** Check the fixed disk flag.
-
- @return
- sal_True if attributes are valid and the volume is a fixed disk else sal_False.
- */
-
- inline sal_Bool getFixedDiskFlag() const
- {
- return 0 != (_aInfo.uAttributes & osl_Volume_Attribute_FixedDisk);
- }
-
- /** Check the RAM disk flag.
-
- @return
- sal_True if attributes are valid and the volume is a RAM disk else sal_False.
- */
-
- inline sal_Bool getRAMDiskFlag() const
- {
- return 0 != (_aInfo.uAttributes & osl_Volume_Attribute_RAMDisk);
- }
-
- /** Determine the total space of a volume device.
-
- @return
- The total diskspace of this volume if this information is valid,
- 0 otherwise.
- */
-
- inline sal_uInt64 getTotalSpace() const
- {
- return _aInfo.uTotalSpace;
- }
-
- /** Determine the free space of a volume device.
-
- @return
- The free diskspace of this volume if this information is valid,
- 0 otherwise.
- */
-
- inline sal_uInt64 getFreeSpace() const
- {
- return _aInfo.uFreeSpace;
- }
-
- /** Determine the used space of a volume device.
-
- @return
- The used diskspace of this volume if this information is valid,
- 0 otherwise.
- */
-
- inline sal_uInt64 getUsedSpace() const
- {
- return _aInfo.uUsedSpace;
- }
-
- /** Determine the maximal length of a file name.
-
- @return
- The maximal length of a file name if this information is valid,
- 0 otherwise.
- */
-
- inline sal_uInt32 getMaxNameLength() const
- {
- return _aInfo.uMaxNameLength;
- }
-
- /** Determine the maximal length of a path name.
-
- @return
- The maximal length of a path if this information is valid,
- 0 otherwise.
- */
-
- inline sal_uInt32 getMaxPathLength() const
- {
- return _aInfo.uMaxPathLength;
- }
-
- /** Determine the name of the volume device's File System.
-
- @return
- The name of the volume's fielsystem if this information is valid,
- otherwise an empty string.
- */
-
- inline ::rtl::OUString getFileSystemName() const
- {
- return _aInfo.ustrFileSystemName ? ::rtl::OUString( _aInfo.ustrFileSystemName ) : ::rtl::OUString();
- }
-
-
- /** Get the volume device handle.
-
- @return
- The device handle of the volume if this information is valid,
- otherwise returns NULL;
- */
-
- inline VolumeDevice getDeviceHandle() const
- {
- return _aDevice;
- }
-
- /** Return whether the file system is case sensitive or
- case insensitive
-
- @return
- true if the file system is case sensitive false otherwise
- */
- bool isCaseSensitiveFileSystem() const
- {
- return (_aInfo.uAttributes & osl_Volume_Attribute_Case_Sensitive);
- }
-
- /** Return whether the file system preserves the case of
- file and directory names or not
-
- @return
- true if the file system preserves the case of file and
- directory names false otherwise
- */
- bool isCasePreservingFileSystem() const
- {
- return (_aInfo.uAttributes & osl_Volume_Attribute_Case_Is_Preserved);
- }
-
- friend class Directory;
-};
-
-// -----------------------------------------------------------------------------
-class DirectoryItem;
-
-/** The FileStatus class.
-
- @see DirectoryItem::getFileStatus
-*/
-
-class FileStatus
-{
- oslFileStatus _aStatus;
- sal_uInt32 _nMask;
-
- /** Copy constructor.
- */
-
- FileStatus( FileStatus& );
-
- /** Assignment operator.
- */
-
- FileStatus& operator = ( FileStatus& );
-
-public:
-
- enum Type {
- Directory = osl_File_Type_Directory,
- Volume = osl_File_Type_Volume,
- Regular = osl_File_Type_Regular,
- Fifo = osl_File_Type_Fifo,
- Socket = osl_File_Type_Socket,
- Link = osl_File_Type_Link,
- Special = osl_File_Type_Special,
- Unknown = osl_File_Type_Unknown
- };
-
- /** Constructor.
-
- @param nMask
- Set of flags decribing the demanded information.
- */
-
- FileStatus( sal_uInt32 nMask ): _nMask( nMask )
- {
- _aStatus.uStructSize = sizeof( oslFileStatus );
- memset( &_aStatus.uValidFields, 0, sizeof( oslFileStatus ) - sizeof( sal_uInt32 ) );
- }
-
- /** Destructor.
- */
-
- ~FileStatus()
- {
- if ( _aStatus.ustrFileURL )
- rtl_uString_release( _aStatus.ustrFileURL );
- if ( _aStatus.ustrLinkTargetURL )
- rtl_uString_release( _aStatus.ustrLinkTargetURL );
- if ( _aStatus.ustrFileName )
- rtl_uString_release( _aStatus.ustrFileName );
- }
-
- /** Check if specified fields are valid.
-
- @param nMask
- Set of flags for the fields to check.
-
- @return
- sal_True if all fields are valid else sal_False.
- */
-
- inline sal_Bool isValid( sal_uInt32 nMask ) const
- {
- return ( nMask & _aStatus.uValidFields ) == nMask;
- }
-
- /** Get the file type.
-
- @return
- The file type.
- */
- inline Type getFileType() const
- {
- SAL_INFO_IF(
- !isValid(osl_FileStatus_Mask_Type), "sal.osl",
- "no FileStatus Type determined");
- return isValid(osl_FileStatus_Mask_Type)
- ? static_cast< Type >(_aStatus.eType) : Unknown;
- }
-
- /** Is it a directory?
- This method returns True for both directories, and volumes.
-
- @return
- True if it's a directory, False otherwise.
-
- @see getFileType
- @since LibreOffice 3.6
- */
- inline sal_Bool isDirectory() const
- {
- return ( getFileType() == Directory || getFileType() == Volume );
- }
-
- /** Is it a regular file?
-
- @return
- True if it's a regular file, False otherwise.
-
- @see getFileType
- @see isFile
- @see isLink
- @since LibreOffice 3.6
- */
- inline sal_Bool isRegular() const
- {
- return ( getFileType() == Regular );
- }
-
- /** Is it a link?
-
- @return
- True if it's a link, False otherwise.
-
- @see getFileType
- @since LibreOffice 3.6
- */
- inline sal_Bool isLink() const
- {
- return ( getFileType() == Link );
- }
-
- /** Get the file attributes.
-
- @return
- The set of attribute flags of this file.
- */
-
- inline sal_uInt64 getAttributes() const
- {
- SAL_INFO_IF(
- !isValid(osl_FileStatus_Mask_Attributes), "sal.osl",
- "no FileStatus Attributes determined");
- return _aStatus.uAttributes;
- }
-
- /** Get the creation time of this file.
-
- @return
- The creation time if this information is valid, an uninitialized
- TimeValue otherwise.
- */
-
- inline TimeValue getCreationTime() const
- {
- SAL_INFO_IF(
- !isValid(osl_FileStatus_Mask_CreationTime), "sal.osl",
- "no FileStatus CreationTime determined");
- return _aStatus.aCreationTime;
- }
-
- /** Get the file access time.
-
- @return
- The last access time if this information is valid, an uninitialized
- TimeValue otherwise.
- */
-
- inline TimeValue getAccessTime() const
- {
- SAL_INFO_IF(
- !isValid(osl_FileStatus_Mask_AccessTime), "sal.osl",
- "no FileStatus AccessTime determined");
- return _aStatus.aAccessTime;
- }
-
- /** Get the file modification time.
-
- @return
- The last modified time if this information is valid, an uninitialized
- TimeValue otherwise.
- */
-
- inline TimeValue getModifyTime() const
- {
- SAL_INFO_IF(
- !isValid(osl_FileStatus_Mask_ModifyTime), "sal.osl",
- "no FileStatus ModifyTime determined");
- return _aStatus.aModifyTime;
- }
-
- /** Get the size of the file.
-
- @return
- The actual file size if this information is valid, 0 otherwise.
- */
-
- inline sal_uInt64 getFileSize() const
- {
- SAL_INFO_IF(
- !isValid(osl_FileStatus_Mask_FileSize), "sal.osl",
- "no FileStatus FileSize determined");
- return _aStatus.uFileSize;
- }
-
- /** Get the file name.
-
- @return
- The file name if this information is valid, an empty string otherwise.
- */
-
- inline ::rtl::OUString getFileName() const
- {
- SAL_INFO_IF(
- !isValid(osl_FileStatus_Mask_FileName), "sal.osl",
- "no FileStatus FileName determined");
- return isValid(osl_FileStatus_Mask_FileName)
- ? rtl::OUString(_aStatus.ustrFileName) : rtl::OUString();
- }
-
-
- /** Get the URL of the file.
-
- @return
- The full qualified URL of the file if this information is valid, an
- empty string otherwise.
- */
-
- inline ::rtl::OUString getFileURL() const
- {
- SAL_INFO_IF(
- !isValid(osl_FileStatus_Mask_FileURL), "sal.osl",
- "no FileStatus FileURL determined");
- return isValid(osl_FileStatus_Mask_FileURL)
- ? rtl::OUString(_aStatus.ustrFileURL) : rtl::OUString();
- }
-
- /** Get the link target URL.
-
- @return
- The link target URL if this information is valid, an empty string
- otherwise.
- */
-
- inline ::rtl::OUString getLinkTargetURL() const
- {
- SAL_INFO_IF(
- !isValid(osl_FileStatus_Mask_LinkTargetURL), "sal.osl",
- "no FileStatus LinkTargetURL determined");
- return isValid(osl_FileStatus_Mask_LinkTargetURL)
- ? rtl::OUString(_aStatus.ustrLinkTargetURL) : rtl::OUString();
- }
-
- friend class DirectoryItem;
-};
-
-
-// -----------------------------------------------------------------------------
-/** The file class object provides access to file contents and attributes.
-
- @see Directory
- @see DirectoryItem
- */
-
-class File: public FileBase
-{
- oslFileHandle _pData;
- ::rtl::OUString _aPath;
-
- /** Copy constructor.
- */
-
- File( File& );
-
- /** Assginment operator.
- */
-
- File& operator = ( File& );
-
-public:
-
- /** Constructor.
-
- @param ustrFileURL [in]
- The full qualified URL of the file. Relative paths are not allowed.
- */
-
- File( const ::rtl::OUString& ustrFileURL ): _pData( 0 ), _aPath( ustrFileURL ) {}
-
- /** Destructor
- */
-
- inline ~File()
- {
- close();
- }
-
- /** Obtain the URL.
-
- @return
- the URL with which this File instance was created.
-
- @since LibreOffice 4.1
- */
- inline rtl::OUString getURL() const { return _aPath; }
-
- /** Open a regular file.
-
- Open a file. Only regular files can be openend.
-
- @param uFlags [in]
- Specifies the open mode.
-
- @return
- E_None on success
- E_NOMEM not enough memory for allocating structures
- E_INVAL the format of the parameters was not valid
- E_NAMETOOLONG pathname was too long
- E_NOENT no such file or directory
- E_ACCES permission denied
- E_AGAIN a write lock could not be established
- E_NOTDIR not a directory
- E_NXIO no such device or address
- E_NODEV no such device
- E_ROFS read-only file system
- E_TXTBSY text file busy
- E_FAULT bad address
- E_LOOP too many symbolic links encountered
- E_NOSPC no space left on device
- E_ISDIR is a directory
- E_MFILE too many open files used by the process
- E_NFILE too many open files in the system
- E_DQUOT quota exceeded
- E_EXIST file exists
- E_INTR function call was interrupted
- E_IO on I/O errors
- E_MULTIHOP multihop attempted
- E_NOLINK link has been severed
- E_EOVERFLOW value too large for defined data type
-
- @see close()
- @see setPos()
- @see getPos()
- @see read()
- @see write()
- @see getSize()
- @see setSize()
- */
-
- inline RC open( sal_uInt32 uFlags )
- {
- return (RC) osl_openFile( _aPath.pData, &_pData, uFlags );
- }
-
- /** Close an open file.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_BADF Bad file
- E_INTR function call was interrupted
- E_NOLINK link has been severed
- E_NOSPC no space left on device
- E_IO on I/O errors
-
- @see open()
- */
-
- inline RC close()
- {
- oslFileError Error = osl_File_E_BADF;
-
- if( _pData )
- {
- Error=osl_closeFile( _pData );
- _pData = NULL;
- }
-
- return (RC) Error;
- }
-
- /** Set the internal position pointer of an open file.
-
- @param uHow [in]
- Distance to move the internal position pointer (from uPos).
-
- @param uPos [in]
- Absolute position from the beginning of the file.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_OVERFLOW the resulting file offset would be a value which cannot be represented correctly for regular files
-
- @see open()
- @see getPos()
- */
-
- inline RC setPos( sal_uInt32 uHow, sal_Int64 uPos ) SAL_WARN_UNUSED_RESULT
- {
- return (RC) osl_setFilePos( _pData, uHow, uPos );
- }
-
- /** Retrieve the current position of the internal pointer of an open file.
-
- @param uPos [out]
- On success receives the current position of the file pointer.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_OVERFLOW the resulting file offset would be a value which cannot be represented correctly for regular files
-
- @see open()
- @see setPos()
- @see read()
- @see write()
- */
-
- inline RC getPos( sal_uInt64& uPos )
- {
- return (RC) osl_getFilePos( _pData, &uPos );
- }
-
- /** Test if the end of a file is reached.
-
- @param pIsEOF [out]
- Points to a variable that receives the end-of-file status.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_INTR function call was interrupted
- E_IO on I/O errors
- E_ISDIR is a directory
- E_BADF bad file
- E_FAULT bad address
- E_AGAIN operation would block
- E_NOLINK link has been severed
-
- @see open()
- @see read()
- @see readLine()
- @see setPos()
- */
-
- inline RC isEndOfFile( sal_Bool *pIsEOF )
- {
- return (RC) osl_isEndOfFile( _pData, pIsEOF );
- }
-
- /** Set the file size of an open file.
-
- Sets the file size of an open file. The file can be truncated or enlarged by the function.
- The position of the file pointer is not affeced by this function.
-
- @param uSize [in]
- New size in bytes.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_OVERFLOW the resulting file offset would be a value which cannot be represented correctly for regular files
-
- @see open()
- @see setPos()
- @see getStatus()
- */
-
- inline RC setSize( sal_uInt64 uSize )
- {
- return (RC) osl_setFileSize( _pData, uSize );
- }
-
- /** Get the file size of an open file.
-
- Gets the file size of an open file.
- The position of the file pointer is not affeced by this function.
-
- @param rSize [out]
- Current size in bytes.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_OVERFLOW the resulting file offset would be a value which cannot be represented correctly for regular files
-
- @see open()
- @see setPos()
- @see getSize()
- @see setSize()
- @see getStatus()
- */
-
- inline RC getSize( sal_uInt64 &rSize )
- {
- return (RC) osl_getFileSize( _pData, &rSize );
- }
-
- /** Read a number of bytes from a file.
-
- Reads a number of bytes from a file. The internal file pointer is
- increased by the number of bytes read.
-
- @param pBuffer [out]
- Points to a buffer which receives data. The buffer must be large enough
- to hold uBytesRequested bytes.
-
- @param uBytesRequested [in]
- Number of bytes which should be retrieved.
-
- @param rBytesRead [out]
- On success the number of bytes which have actually been retrieved.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_INTR function call was interrupted
- E_IO on I/O errors
- E_ISDIR is a directory
- E_BADF bad file
- E_FAULT bad address
- E_AGAIN operation would block
- E_NOLINK link has been severed
-
- @see open()
- @see write()
- @see readLine()
- @see setPos()
- */
-
- inline RC read( void *pBuffer, sal_uInt64 uBytesRequested, sal_uInt64& rBytesRead )
- {
- return (RC) osl_readFile( _pData, pBuffer, uBytesRequested, &rBytesRead );
- }
-
- /** Write a number of bytes to a file.
-
- Writes a number of bytes to a file.
- The internal file pointer is increased by the number of bytes read.
-
- @param pBuffer [in]
- Points to a buffer which contains the data.
-
- @param uBytesToWrite [in]
- Number of bytes which should be written.
-
- @param rBytesWritten [out]
- On success the number of bytes which have actually been written.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_FBIG file too large
- E_DQUOT quota exceeded
- E_AGAIN operation would block
- E_BADF bad file
- E_FAULT bad address
- E_INTR function call was interrupted
- E_IO on I/O errosr
- E_NOLCK no record locks available
- E_NOLINK link has been severed
- E_NOSPC no space left on device
- E_NXIO no such device or address
-
- @see open()
- @see read()
- @see setPos()
- */
-
- inline RC write(const void *pBuffer, sal_uInt64 uBytesToWrite, sal_uInt64& rBytesWritten)
- {
- return (RC) osl_writeFile( _pData, pBuffer, uBytesToWrite, &rBytesWritten );
- }
-
-
- /** Read a line from a file.
-
- Reads a line from a file. The new line delimiter is NOT returned!
-
- @param aSeq [in/out]
- A reference to a ::rtl::ByteSequence that will hold the line read on success.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_INTR function call was interrupted
- E_IO on I/O errors
- E_ISDIR is a directory
- E_BADF bad file
- E_FAULT bad address
- E_AGAIN operation would block
- E_NOLINK link has been severed
-
- @see open()
- @see read()
- @see write()
- @see setPos()
- */
-
- inline RC readLine( ::rtl::ByteSequence& aSeq )
- {
- return (RC) osl_readLine( _pData, reinterpret_cast<sal_Sequence**>(&aSeq) );
- }
-
- /** Synchronize the memory representation of a file with that on the physical medium.
-
- The function ensures that all modified data and attributes of the file associated with
- the given file handle have been written to the physical medium.
- In case the hard disk has a write cache enabled, the data may not really be on
- permanent storage when osl_syncFile returns.
-
- @return
- <dl>
- <dt>E_None</dt>
- <dd>On success</dd>
- <dt>E_INVAL</dt>
- <dd>The value of the input parameter is invalid</dd>
- <br><p><strong>In addition to these error codes others may occur as well, for instance:</strong></p><br>
- <dt>E_BADF</dt>
- <dd>The file is not open for writing</dd>
- <dt>E_IO</dt>
- <dd>An I/O error occurred</dd>
- <dt>E_NOSPC</dt>
- <dd>There is no enough space on the target device</dd>
- <dt>E_ROFS</dt>
- <dd>The file is located on a read only file system</dd>
- <dt>E_TIMEDOUT</dt>
- <dd>A remote connection timed out. This may happen when a file is on a remote location</dd>
- </dl>
-
- @see osl_syncFile()
- @see open()
- @see write()
- */
- inline RC sync() const
- {
- OSL_PRECOND(_pData, "File::sync(): File not open");
- return (RC)osl_syncFile(_pData);
- }
-
- /** Copy a file to a new destination.
-
- Copies a file to a new destination. Copies only files not directories.
- No assumptions should be made about preserving attributes or file time.
-
- @param ustrSourceFileURL [in]
- Full qualified URL of the source file.
-
- @param ustrDestFileURL [in]
- Full qualified URL of the destination file. A directory is NOT a valid destination file!
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_NOMEM not enough memory for allocating structures
- E_ACCES permission denied
- E_PERM operation not permitted
- E_NAMETOOLONG file name too long
- E_NOENT no such file or directory
- E_ISDIR is a directory
- E_ROFS read-only file system
-
- @see move()
- @see remove()
- */
-
- inline static RC copy( const ::rtl::OUString& ustrSourceFileURL, const ::rtl::OUString& ustrDestFileURL )
- {
- return (RC) osl_copyFile( ustrSourceFileURL.pData, ustrDestFileURL.pData );
- }
-
- /** Move a file or directory to a new destination or renames it.
-
- Moves a file or directory to a new destination or renames it.
- File time and attributes are preserved.
-
- @param ustrSourceFileURL [in]
- Full qualified URL of the source file.
-
- @param ustrDestFileURL [in]
- Full qualified URL of the destination file. An existing directory is NOT a valid destination !
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_NOMEM not enough memory for allocating structures
- E_ACCES permission denied
- E_PERM operation not permitted
- E_NAMETOOLONG file name too long
- E_NOENT no such file or directory
- E_ROFS read-only file system
-
- @see copy()
- */
-
- inline static RC move( const ::rtl::OUString& ustrSourceFileURL, const ::rtl::OUString& ustrDestFileURL )
- {
- return (RC) osl_moveFile( ustrSourceFileURL.pData, ustrDestFileURL.pData );
- }
-
- /** Remove a regular file.
-
- @param ustrFileURL [in]
- Full qualified URL of the file to remove.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_NOMEM not enough memory for allocating structures
- E_ACCES permission denied
- E_PERM operation not permitted
- E_NAMETOOLONG file name too long
- E_NOENT no such file or directory
- E_ISDIR is a directory
- E_ROFS read-only file system
- E_FAULT bad address
- E_LOOP too many symbolic links encountered
- E_IO on I/O errors
- E_BUSY device or resource busy
- E_INTR function call was interrupted
- E_LOOP too many symbolic links encountered
- E_MULTIHOP multihop attempted
- E_NOLINK link has been severed
- E_TXTBSY text file busy
-
- @see open()
- */
-
- inline static RC remove( const ::rtl::OUString& ustrFileURL )
- {
- return (RC) osl_removeFile( ustrFileURL.pData );
- }
-
- /** Set file attributes.
-
- @param ustrFileURL [in]
- The full qualified file URL.
-
- @param uAttributes [in]
- Attributes of the file to be set.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
-
- @see FileStatus
- */
-
- inline static RC setAttributes( const ::rtl::OUString& ustrFileURL, sal_uInt64 uAttributes )
- {
- return (RC) osl_setFileAttributes( ustrFileURL.pData, uAttributes );
- }
-
- /** Set the file time.
-
- @param ustrFileURL [in]
- The full qualified URL of the file.
-
- @param rCreationTime [in]
- Creation time of the given file.
-
- @param rLastAccessTime [in]
- Time of the last access of the given file.
-
- @param rLastWriteTime [in]
- Time of the last modifying of the given file.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_NOENT no such file or directory not found
-
- @see FileStatus
- */
-
- inline static RC setTime(
- const ::rtl::OUString& ustrFileURL,
- const TimeValue& rCreationTime,
- const TimeValue& rLastAccessTime,
- const TimeValue& rLastWriteTime )
- {
- return (RC) osl_setFileTime(
- ustrFileURL.pData,
- &rCreationTime,
- &rLastAccessTime,
- &rLastWriteTime );
- }
-
- friend class DirectoryItem;
-};
-
-// -----------------------------------------------------------------------------
-/** The directory item class object provides access to file status information.
-
- @see FileStatus
- */
-
-class DirectoryItem: public FileBase
-{
- oslDirectoryItem _pData;
-
-public:
-
- /** Constructor.
- */
-
- DirectoryItem(): _pData( NULL )
- {
- }
-
- /** Copy constructor.
- */
-
- DirectoryItem( const DirectoryItem& rItem ): _pData( rItem._pData)
- {
- if( _pData )
- osl_acquireDirectoryItem( _pData );
- }
-
- /** Destructor.
- */
-
- ~DirectoryItem()
- {
- if( _pData )
- osl_releaseDirectoryItem( _pData );
- }
-
- /** Assignment operator.
- */
-
- DirectoryItem& operator=(const DirectoryItem& rItem )
- {
- if (&rItem != this)
- {
- if( _pData )
- osl_releaseDirectoryItem( _pData );
-
- _pData = rItem._pData;
-
- if( _pData )
- osl_acquireDirectoryItem( _pData );
- }
- return *this;
- }
-
- /** Check for validity of this instance.
-
- @return
- sal_True if object is valid directory item else sal_False.
- */
-
- inline sal_Bool is()
- {
- return _pData != NULL;
- }
-
- /** Retrieve a single directory item.
-
- Retrieves a single directory item. The returned handle has an initial refcount of 1.
- Due to performance issues it is not recommended to use this function while
- enumerating the contents of a directory. In this case use osl_getNextDirectoryItem() instead.
-
- @param ustrFileURL [in]
- An absolute file URL.
-
- @param rItem [out]
- On success it receives a handle which can be used for subsequent calls to osl_getFileStatus().
- The handle has to be released by a call to osl_releaseDirectoryItem().
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_NOMEM not enough memory for allocating structures
- E_ACCES permission denied
- E_MFILE too many open files used by the process
- E_NFILE too many open files in the system
- E_NOENT no such file or directory
- E_LOOP too many symbolic links encountered
- E_NAMETOOLONG the file name is too long
- E_NOTDIR a component of the path prefix of path is not a directory
- E_IO on I/O errors
- E_MULTIHOP multihop attempted
- E_NOLINK link has been severed
- E_FAULT bad address
- E_INTR the function call was interrupted
-
- @see FileStatus
- @see Directory::getNextItem()
- */
-
- static inline RC get( const ::rtl::OUString& ustrFileURL, DirectoryItem& rItem )
- {
- if( rItem._pData)
- {
- osl_releaseDirectoryItem( rItem._pData );
- rItem._pData = NULL;
- }
-
- return (RC) osl_getDirectoryItem( ustrFileURL.pData, &rItem._pData );
- }
-
- /** Retrieve information about a single file or directory.
-
- @param rStatus [in|out]
- Reference to a class which receives the information of the file or directory
- represented by this directory item.
-
- @return
- E_None on success
- E_NOMEM not enough memory for allocating structures
- E_INVAL the format of the parameters was not valid
- E_LOOP too many symbolic links encountered
- E_ACCES permission denied
- E_NOENT no such file or directory
- E_NAMETOOLONG file name too long
- E_BADF invalid oslDirectoryItem parameter
- E_FAULT bad address
- E_OVERFLOW value too large for defined data type
- E_INTR function call was interrupted
- E_NOLINK link has been severed
- E_MULTIHOP components of path require hopping to multiple remote machines and the file system does not allow it
- E_MFILE too many open files used by the process
- E_NFILE too many open files in the system
- E_NOSPC no space left on device
- E_NXIO no such device or address
- E_IO on I/O errors
- E_NOSYS function not implemented
-
- @see get()
- @see Directory::getNextItem()
- @see FileStatus
- */
-
- inline RC getFileStatus( FileStatus& rStatus )
- {
- return (RC) osl_getFileStatus( _pData, &rStatus._aStatus, rStatus._nMask );
- }
-
-/** Determine if a directory item point the same underlying file
-
- The comparison is done first by URL, and then by resolving links to
- find the target, and finally by comparing inodes on unix.
-
- @param[in] pOther
- A directory handle to compare with the underlying object's item
-
- @return
- sal_True: if the items point to an identical resource<br>
- sal_False: if the items point to a different resource, or a fatal error occured<br>
-
- @see osl_getDirectoryItem()
-
- @since LibreOffice 3.6
-*/
- inline sal_Bool isIdenticalTo( const DirectoryItem &pOther )
- {
- return osl_identicalDirectoryItem( _pData, pOther._pData );
- }
-
- friend class Directory;
-};
-
-//###########################################
-
-/** Base class for observers of directory creation notifications.
-
- Clients which uses the method createDirectoryPath of the class
- Directory may want to be informed about the directories that
- have been created. This may be accomplished by deriving from
- this base class and overwriting the virtual function
- DirectoryCreated.
-
- @see Directory::createPath
-*/
-class DirectoryCreationObserver
-{
-public:
- virtual ~DirectoryCreationObserver() {}
-
- /** This method will be called when a new directory has been
- created and needs to be overwritten by derived classes.
- You must not delete the directory that was just created
- otherwise you will run into an endless loop.
-
- @param aDirectoryUrl
- [in]The absolute file URL of the directory that was just created by
- ::osl::Directory::createPath.
- */
- virtual void DirectoryCreated(const rtl::OUString& aDirectoryUrl) = 0;
-};
-
-//###########################################
-// This just an internal helper function for
-// private use.
-extern "C" inline void SAL_CALL onDirectoryCreated(void* pData, rtl_uString* aDirectoryUrl)
-{
- (static_cast<DirectoryCreationObserver*>(pData))->DirectoryCreated(aDirectoryUrl);
-}
-
-/** The directory class object provides a enumeration of DirectoryItems.
-
- @see DirectoryItem
- @see File
- */
-
-class Directory: public FileBase
-{
- oslDirectory _pData;
- ::rtl::OUString _aPath;
-
- /** Copy constructor.
- */
-
- Directory( Directory& );
-
- /** Assignment operator.
- */
-
- Directory& operator = ( Directory& );
-
-public:
-
- /** Constructor.
-
- @param strPath [in]
- The full qualified URL of the directory.
- Relative URLs are not allowed.
- */
-
- Directory( const ::rtl::OUString& strPath ): _pData( 0 ), _aPath( strPath )
- {
- }
-
- /** Destructor.
- */
-
- ~Directory()
- {
- close();
- }
-
- /** Obtain the URL.
-
- @return
- the URL with which this Directory instance was created.
-
- @since LibreOffice 4.1
- */
- inline rtl::OUString getURL() const { return _aPath; }
-
- /** Open a directory for enumerating its contents.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_NOENT the specified path doesn't exist
- E_NOTDIR the specified path is not an directory
- E_NOMEM not enough memory for allocating structures
- E_ACCES permission denied
- E_MFILE too many open files used by the process
- E_NFILE too many open files in the system
- E_NAMETOOLONG File name too long
- E_LOOP Too many symbolic links encountered
-
- @see getNextItem()
- @see close()
- */
-
- inline RC open()
- {
- return (RC) osl_openDirectory( _aPath.pData, &_pData );
- }
-
- /** Query if directory is open.
-
- Query if directory is open and so item enumeration is valid.
-
- @return
- sal_True if the directory is open else sal_False.
-
- @see open()
- @see close()
- */
-
- inline sal_Bool isOpen() { return _pData != NULL; }
-
- /** Close a directory.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_NOMEM not enough memory for allocating structures
- E_BADF invalid oslDirectory parameter
- E_INTR the function call was interrupted
-
- @see open()
- */
-
- inline RC close()
- {
- oslFileError Error = osl_File_E_BADF;
-
- if( _pData )
- {
- Error=osl_closeDirectory( _pData );
- _pData = NULL;
- }
-
- return (RC) Error;
- }
-
-
- /** Resets the directory item enumeration to the beginning.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_NOENT the specified path doesn't exist
- E_NOTDIR the specified path is not an directory
- E_NOMEM not enough memory for allocating structures
- E_ACCES permission denied
- E_MFILE too many open files used by the process
- E_NFILE too many open files in the system
- E_NAMETOOLONG File name too long
- E_LOOP Too many symbolic links encountered
-
- @see open()
- */
-
- inline RC reset()
- {
- close();
- return open();
- }
-
- /** Retrieve the next item of a previously opened directory.
-
- Retrieves the next item of a previously opened directory.
-
- @param rItem [out]
- On success a valid DirectoryItem.
-
- @param nHint [in]
- With this parameter the caller can tell the implementation that (s)he
- is going to call this function uHint times afterwards. This enables the implementation to
- get the information for more than one file and cache it until the next calls.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_NOMEM not enough memory for allocating structures
- E_NOENT no more entries in this directory
- E_BADF invalid oslDirectory parameter
- E_OVERFLOW the value too large for defined data type
-
- @see DirectoryItem
- */
-
- inline RC getNextItem( DirectoryItem& rItem, sal_uInt32 nHint = 0 )
- {
- if( rItem._pData )
- {
- osl_releaseDirectoryItem( rItem._pData );
- rItem._pData = 0;
- }
- return ( RC) osl_getNextDirectoryItem( _pData, &rItem._pData, nHint );
- }
-
-
- /** Retrieve information about a volume.
-
- Retrieves information about a volume. A volume can either be a mount point, a network
- resource or a drive depending on Operating System and File System.
-
- @param ustrDirectoryURL [in]
- Full qualified URL of the volume
-
- @param rInfo [out]
- On success it receives information about the volume.
-
- @return
- E_None on success
- E_NOMEM not enough memory for allocating structures
- E_INVAL the format of the parameters was not valid
- E_NOTDIR not a directory
- E_NAMETOOLONG file name too long
- E_NOENT no such file or directory
- E_ACCES permission denied
- E_LOOP too many symbolic links encountered
- E_FAULT Bad address
- E_IO on I/O errors
- E_NOSYS function not implemented
- E_MULTIHOP multihop attempted
- E_NOLINK link has been severed
- E_INTR function call was interrupted
-
- @see FileStatus
- @see VolumeInfo
- */
-
- inline static RC getVolumeInfo( const ::rtl::OUString& ustrDirectoryURL, VolumeInfo& rInfo )
- {
- return (RC) osl_getVolumeInformation( ustrDirectoryURL.pData, &rInfo._aInfo, rInfo._nMask );
- }
-
- /** Create a directory.
-
- @param ustrDirectoryURL [in]
- Full qualified URL of the directory to create.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_NOMEM not enough memory for allocating structures
- E_EXIST file exists
- E_ACCES permission denied
- E_NAMETOOLONG file name too long
- E_NOENT no such file or directory
- E_NOTDIR not a directory
- E_ROFS read-only file system
- E_NOSPC no space left on device
- E_DQUOT quota exceeded
- E_LOOP too many symbolic links encountered
- E_FAULT bad address
- E_IO on I/O errors
- E_MLINK too many links
- E_MULTIHOP multihop attempted
- E_NOLINK link has been severed
-
- @see remove()
- */
-
- inline static RC create( const ::rtl::OUString& ustrDirectoryURL )
- {
- return (RC) osl_createDirectory( ustrDirectoryURL.pData );
- }
-
- /** Remove an empty directory.
-
- @param ustrDirectoryURL [in]
- Full qualified URL of the directory.
-
- @return
- E_None on success
- E_INVAL the format of the parameters was not valid
- E_NOMEM not enough memory for allocating structures
- E_PERM operation not permitted
- E_ACCES permission denied
- E_NOENT no such file or directory
- E_NOTDIR not a directory
- E_NOTEMPTY directory not empty
- E_FAULT bad address
- E_NAMETOOLONG file name too long
- E_BUSY device or resource busy
- E_ROFS read-only file system
- E_LOOP too many symbolic links encountered
- E_BUSY device or resource busy
- E_EXIST file exists
- E_IO on I/O errors
- E_MULTIHOP multihop attempted
- E_NOLINK link has been severed
-
- @see create()
- */
-
- inline static RC remove( const ::rtl::OUString& ustrDirectoryURL )
- {
- return (RC) osl_removeDirectory( ustrDirectoryURL.pData );
- }
-
- /** Create a directory path.
-
- The osl_createDirectoryPath function creates a specified directory path.
- All nonexisting sub directories will be created.
- <p><strong>PLEASE NOTE:</strong> You cannot rely on getting the error code
- E_EXIST for existing directories. Programming against this error code is
- in general a strong indication of a wrong usage of osl_createDirectoryPath.</p>
-
- @param aDirectoryUrl
- [in] The absolute file URL of the directory path to create.
- A relative file URL will not be accepted.
-
- @param aDirectoryCreationObserver
- [in] Pointer to an instance of type DirectoryCreationObserver that will
- be informed about the creation of a directory. The value of this
- parameter may be NULL, in this case notifications will not be sent.
-
- @return
- <dl>
- <dt>E_None</dt>
- <dd>On success</dd>
- <dt>E_INVAL</dt>
- <dd>The format of the parameters was not valid</dd>
- <dt>E_ACCES</dt>
- <dd>Permission denied</dd>
- <dt>E_EXIST</dt>
- <dd>The final node of the specified directory path already exist</dd>
- <dt>E_NAMETOOLONG</dt>
- <dd>The name of the specified directory path exceeds the maximum allowed length</dd>
- <dt>E_NOTDIR</dt>
- <dd>A component of the specified directory path already exist as file in any part of the directory path</dd>
- <dt>E_ROFS</dt>
- <dd>Read-only file system</dd>
- <dt>E_NOSPC</dt>
- <dd>No space left on device</dd>
- <dt>E_DQUOT</dt>
- <dd>Quota exceeded</dd>
- <dt>E_FAULT</dt>
- <dd>Bad address</dd>
- <dt>E_IO</dt>
- <dd>I/O error</dd>
- <dt>E_LOOP</dt>
- <dd>Too many symbolic links encountered</dd>
- <dt>E_NOLINK</dt>
- <dd>Link has been severed</dd>
- <dt>E_invalidError</dt>
- <dd>An unknown error occurred</dd>
- </dl>
-
- @see DirectoryCreationObserver
- @see create
- */
- static RC createPath(
- const ::rtl::OUString& aDirectoryUrl,
- DirectoryCreationObserver* aDirectoryCreationObserver = NULL)
- {
- return (RC)osl_createDirectoryPath(
- aDirectoryUrl.pData,
- (aDirectoryCreationObserver) ? onDirectoryCreated : NULL,
- aDirectoryCreationObserver);
- }
-};
-
-} /* namespace osl */
-
-#endif /* _OSL_FILE_HXX_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/getglobalmutex.hxx b/sal/inc/osl/getglobalmutex.hxx
deleted file mode 100644
index 4fbd32a3e4b5..000000000000
--- a/sal/inc/osl/getglobalmutex.hxx
+++ /dev/null
@@ -1,44 +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_OSL_GETGLOBALMUTEX_HXX
-#define INCLUDED_OSL_GETGLOBALMUTEX_HXX
-
-#include "osl/mutex.hxx"
-
-namespace osl {
-
-/** A helper functor for the rtl_Instance template.
-
- See the rtl_Instance template for examples of how this class is used.
- */
-class GetGlobalMutex
-{
-public:
- ::osl::Mutex * operator()()
- {
- return ::osl::Mutex::getGlobalMutex();
- }
-};
-
-}
-
-#endif // INCLUDED_OSL_GETGLOBALMUTEX_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/interlck.h b/sal/inc/osl/interlck.h
deleted file mode 100644
index 31212deed274..000000000000
--- a/sal/inc/osl/interlck.h
+++ /dev/null
@@ -1,92 +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 _OSL_INTERLOCK_H_
-#define _OSL_INTERLOCK_H_
-
-#include "sal/config.h"
-
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef sal_Int32 oslInterlockedCount;
-
-/** Increments the count variable addressed by pCount.
- @param pCount Address of count variable
- @return The adjusted value of the count variable.
-*/
-SAL_DLLPUBLIC oslInterlockedCount SAL_CALL osl_incrementInterlockedCount(oslInterlockedCount* pCount);
-
-/** Decrement the count variable addressed by pCount.
- @param pCount Address of count variable
- @return The adjusted value of the count variable.
-*/
-SAL_DLLPUBLIC oslInterlockedCount SAL_CALL osl_decrementInterlockedCount(oslInterlockedCount* pCount);
-
-
-/// @cond INTERNAL
-
-/** Increments the count variable addressed by p.
-
- @attention This functionality should only be used internally within
- LibreOffice.
-
- @param p Address of count variable
- @return The adjusted value of the count variable.
-
- @since LibreOffice 4.0
-*/
-#if HAVE_GCC_BUILTIN_ATOMIC
-# define osl_atomic_increment(p) __sync_add_and_fetch((p), 1)
-#else
-# define osl_atomic_increment(p) osl_incrementInterlockedCount((p))
-#endif
-
-
-/** Decrement the count variable addressed by p.
-
- @attention This functionality should only be used internally within
- LibreOffice.
-
- @param p Address of count variable
- @return The adjusted value of the count variable.
-
- @since LibreOffice 4.0
-*/
-#if HAVE_GCC_BUILTIN_ATOMIC
-# define osl_atomic_decrement(p) __sync_sub_and_fetch((p), 1)
-#else
-# define osl_atomic_decrement(p) osl_decrementInterlockedCount((p))
-#endif
-
-/// @endcond
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _OSL_INTERLOCK_H_ */
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/module.h b/sal/inc/osl/module.h
deleted file mode 100644
index 09f2b17b401c..000000000000
--- a/sal/inc/osl/module.h
+++ /dev/null
@@ -1,251 +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 _OSL_MODULE_H_
-#define _OSL_MODULE_H_
-
-#include "sal/config.h"
-
-#include "rtl/tencinfo.h"
-#include "rtl/ustring.h"
-#include "sal/saldllapi.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef SAL_DLLPREFIX
-#define SAL_MODULENAME(name) SAL_DLLPREFIX name SAL_DLLEXTENSION
-#else
-#define SAL_MODULENAME(name) name SAL_DLLEXTENSION
-#endif
-
-#if defined(SAL_W32)
-#define SAL_MODULENAME_WITH_VERSION(name, version) name version SAL_DLLEXTENSION
-
-#elif defined(SAL_UNX)
-#if defined(MACOSX)
-#define SAL_MODULENAME_WITH_VERSION(name, version) SAL_DLLPREFIX name ".dylib." version
-#else
-#define SAL_MODULENAME_WITH_VERSION(name, version) SAL_DLLPREFIX name SAL_DLLEXTENSION "." version
-#endif
-
-#endif
-
-#define SAL_LOADMODULE_DEFAULT 0x00000
-#define SAL_LOADMODULE_LAZY 0x00001
-#define SAL_LOADMODULE_NOW 0x00002
-#define SAL_LOADMODULE_GLOBAL 0x00100
-
-typedef void* oslModule;
-
-/** Generic Function pointer type that will be used as symbol address.
- @see osl_getFunctionSymbol.
- @see osl_getModuleURLFromFunctionAddress.
-*/
-typedef void ( SAL_CALL *oslGenericFunction )( void );
-
-#ifndef DISABLE_DYNLOADING
-
-/** Load a shared library or module.
- @param strModuleName denotes the name of the module to be loaded.
- @param nRtldMode denotes the mode.
- @return NULL if the module could not be loaded, otherwise a handle to the module.
-*/
-SAL_DLLPUBLIC oslModule SAL_CALL osl_loadModule(rtl_uString *strModuleName, sal_Int32 nRtldMode);
-
-/** Load a shared library or module.
- @param pModuleName denotes the name of the module to be loaded.
- @param nRtldMode denotes the mode.
- @return NULL if the module could not be loaded, otherwise a handle to the module.
- @since UDK 3.6
-*/
-SAL_DLLPUBLIC oslModule SAL_CALL osl_loadModuleAscii(const sal_Char *pModuleName, sal_Int32 nRtldMode);
-
-/** Load a module located relative to some other module.
-
- @param baseModule
- must point to a function that is part of the code of some loaded module;
- must not be NULL.
-
- @param relativePath
- a relative URL; must not be NULL.
-
- @param mode
- the SAL_LOADMODULE_xxx flags.
-
- @return
- a non-NULL handle to the loaded module, or NULL if an error occurred.
-
- @since UDK 3.2.8
-*/
-SAL_DLLPUBLIC oslModule SAL_CALL osl_loadModuleRelative(
- oslGenericFunction baseModule, rtl_uString * relativePath, sal_Int32 mode);
-
-/** Load a module located relative to some other module.
-
- @param baseModule
- must point to a function that is part of the code of some loaded module;
- must not be NULL.
-
- @param relativePath
- a relative URL containing only ASCII (0x01--7F) characters; must not be
- NULL.
-
- @param mode
- the SAL_LOADMODULE_xxx flags.
-
- @return
- a non-NULL handle to the loaded module, or NULL if an error occurred.
-
- @since LibreOffice 3.5
-*/
-SAL_DLLPUBLIC oslModule SAL_CALL osl_loadModuleRelativeAscii(
- oslGenericFunction baseModule, char const * relativePath, sal_Int32 mode);
- /* This function is guaranteed not to call into
- FullTextEncodingDataSingleton in sal/textenc/textenc.cxx, so can be used
- in its implementation without running into circles. */
-
-#endif
-
-/** Retrieve the handle of an already loaded module.
-
- This function can be used to search for a function symbol in the process address space.
- Do not use the returned handle as an argument to osl_unloadModule. On Unix platforms,
- pModuleName gets ignored and the special handle RTLD_DEFAULT is returned.
-
- @param pModuleName
- [in] denotes the name of the module to search for. Ignored on Unix
-
- @param pResult
- [out] a pointer to a oslModule that is updated with the requested module handle
- on success.
-
- @return
- sal_True if the module handle could be retrieved and has been copied to *pResult.
- sal_False if the module has not been loaded yet.
-
- @see osl_getFunctionSymbol
- @see osl_getAsciiFunctionSymbol
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getModuleHandle(rtl_uString *pModuleName, oslModule *pResult);
-
-#ifndef DISABLE_DYNLOADING
-
-/** Release the module
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_unloadModule(oslModule Module);
-
-#endif
-
-/** lookup the specified symbol name.
- @return address of the symbol or NULL if lookup failed.
-*/
-SAL_DLLPUBLIC void* SAL_CALL osl_getSymbol( oslModule Module, rtl_uString *strSymbolName);
-
-/** Lookup the specified function symbol name.
-
- osl_getFunctionSymbol is an alternative function for osl_getSymbol.
- Use Function pointer as symbol address to conceal type conversion.
-
- @param Module
- [in] the handle of the Module.
-
- @param ustrFunctionSymbolName
- [in] Name of the function that will be looked up.
-
- @return
- <dl>
- <dt>Function address.</dt>
- <dd>on success</dd>
- <dt>NULL</dt>
- <dd>lookup failed or the parameter are invalid.</dd>
- </dl>
-
- @see osl_getSymbol
- @see osl_getAsciiFunctionSymbol
-*/
-SAL_DLLPUBLIC oslGenericFunction SAL_CALL osl_getFunctionSymbol(
- oslModule Module, rtl_uString *ustrFunctionSymbolName );
-
-/** Lookup the specified function symbol name.
-
- osl_getAsciiFunctionSymbol is an alternative function for osl_getFunctionSymbol.
- It expects the C-style function name string to contain ascii characters only.
-
- @param Module
- [in] a module handle as returned by osl_loadModule or osl_getModuleHandle
-
- @param pSymbol
- [in] Name of the function that will be looked up.
-
- @return
- <dl>
- <dt>Function address.</dt>
- <dd>on success</dd>
- <dt>NULL</dt>
- <dd>lookup failed or the parameter are invalid.</dd>
- </dl>
-
- @see osl_getModuleHandle
- @see osl_getFunctionSymbol
-*/
-SAL_DLLPUBLIC oslGenericFunction SAL_CALL osl_getAsciiFunctionSymbol(
- oslModule Module, const sal_Char *pSymbol );
-
-
-/** Lookup URL of module which is mapped at the specified address.
- @param pv specifies an address in the process memory space.
- @param pustrURL receives the URL of the module that is mapped at pv.
- @return sal_True on success, sal_False if no module can be found at the specified address.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getModuleURLFromAddress(
- void *pv, rtl_uString **pustrURL );
-
-/** Lookup URL of module which is mapped at the specified function address.
-
- osl_getModuleURLFromFunctionAddress is an alternative function for osl_getModuleURLFromAddress.
- Use Function pointer as symbol address to conceal type conversion.
-
- @param pf
- [in] function address in oslGenericFunction format.
-
- @param pustrFunctionURL
- [out] receives the URL of the module that is mapped at pf.
-
- @return
- <dl>
- <dt>sal_True</dt>
- <dd>on success</dd>
- <dt>sal_False</dt>
- <dd>no module can be found at the specified function address or parameter is somewhat invalid.</dd>
- </dl>
-
- @see osl_getModuleURLFromAddress
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getModuleURLFromFunctionAddress(
- oslGenericFunction pf, rtl_uString **pustrFunctionURL );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OSL_MODULE_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/module.hxx b/sal/inc/osl/module.hxx
deleted file mode 100644
index 317579dc816b..000000000000
--- a/sal/inc/osl/module.hxx
+++ /dev/null
@@ -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 _OSL_MODULE_HXX_
-#define _OSL_MODULE_HXX_
-
-#include <rtl/ustring.hxx>
-#include <osl/module.h>
-
-namespace osl
-{
-
-class Module
-{
- Module( const Module&);
- Module& operator = ( const Module&);
-
-public:
- static sal_Bool getUrlFromAddress(void * addr, ::rtl::OUString & libraryUrl) {
- return osl_getModuleURLFromAddress(addr, &libraryUrl.pData);
- }
-
- /** Get module URL from the specified function address in the module.
-
- Similar to getUrlFromAddress, but use a function address to get URL of the Module.
- Use Function pointer as symbol address to conceal type conversion.
-
- @param addr
- [in] function address in oslGenericFunction format.
-
- @param libraryUrl
- [in|out] receives the URL of the module.
-
- @return
- <dl>
- <dt>sal_True</dt>
- <dd>on success</dd>
- <dt>sal_False</dt>
- <dd>can not get the URL from the specified function address or the parameter is invalid.</dd>
- </dl>
-
- @see getUrlFromAddress
- */
- static sal_Bool getUrlFromAddress( oslGenericFunction addr, ::rtl::OUString & libraryUrl){
- return osl_getModuleURLFromFunctionAddress( addr, &libraryUrl.pData );
- }
-
- Module(): m_Module(0){}
-
-#ifndef DISABLE_DYNLOADING
-
- Module( const ::rtl::OUString& strModuleName, sal_Int32 nRtldMode = SAL_LOADMODULE_DEFAULT) : m_Module(0)
- {
- load( strModuleName, nRtldMode);
- }
-
-#endif
-
- ~Module()
- {
-#ifndef DISABLE_DYNLOADING
- osl_unloadModule(m_Module);
-#endif
- }
-
-#ifndef DISABLE_DYNLOADING
-
- sal_Bool SAL_CALL load( const ::rtl::OUString& strModuleName,
- sal_Int32 nRtldMode = SAL_LOADMODULE_DEFAULT)
- {
- unload();
- m_Module= osl_loadModule( strModuleName.pData, nRtldMode );
- return is();
- }
-
- /// @since UDK 3.2.8
- sal_Bool SAL_CALL loadRelative(
- ::oslGenericFunction baseModule, ::rtl::OUString const & relativePath,
- ::sal_Int32 mode = SAL_LOADMODULE_DEFAULT)
- {
- unload();
- m_Module = osl_loadModuleRelative(baseModule, relativePath.pData, mode);
- return is();
- }
-
- /// @since LibreOffice 3.5
- sal_Bool SAL_CALL loadRelative(
- oslGenericFunction baseModule, char const * relativePath,
- sal_Int32 mode = SAL_LOADMODULE_DEFAULT)
- {
- unload();
- m_Module = osl_loadModuleRelativeAscii(baseModule, relativePath, mode);
- return is();
- }
-
- void SAL_CALL unload()
- {
- if (m_Module)
- {
- osl_unloadModule(m_Module);
- m_Module = 0;
- }
- }
-
-#endif
-
- sal_Bool SAL_CALL is() const
- {
- return m_Module != NULL;
- }
-
- void* SAL_CALL getSymbol( const ::rtl::OUString& strSymbolName)
- {
- return ( osl_getSymbol( m_Module, strSymbolName.pData ) );
- }
-
- /** Get function address by the function name in the module.
-
- getFunctionSymbol is an alternative function for getSymbol.
- Use Function pointer as symbol address to conceal type conversion.
-
- @param ustrFunctionSymbolName
- [in] Function name to be looked up.
-
- @return
- <dl>
- <dt>oslGenericFunction format function address</dt>
- <dd>on success</dd>
- <dt>NULL</dt>
- <dd>lookup failed or parameter is somewhat invalid</dd>
- </dl>
-
- @see getSymbol
- */
- oslGenericFunction SAL_CALL getFunctionSymbol( const ::rtl::OUString& ustrFunctionSymbolName ) const
- {
- return ( osl_getFunctionSymbol( m_Module, ustrFunctionSymbolName.pData ) );
- }
-
- /// @since LibreOffice 3.5
- oslGenericFunction SAL_CALL getFunctionSymbol(char const * name) const {
- return osl_getAsciiFunctionSymbol(m_Module, name);
- }
-
- operator oslModule() const
- {
- return m_Module;
- }
-
-private:
- oslModule m_Module;
-
-};
-
-}
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/mutex.h b/sal/inc/osl/mutex.h
deleted file mode 100644
index 1336d4fcea95..000000000000
--- a/sal/inc/osl/mutex.h
+++ /dev/null
@@ -1,74 +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 _OSL_MUTEX_H_
-#define _OSL_MUTEX_H_
-
-#include "sal/config.h"
-
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct _oslMutexImpl;
-typedef struct _oslMutexImpl * oslMutex;
-
-/** Create a thread-local mutex.
- @return 0 if the mutex could not be created, otherwise a handle to the mutex.
-*/
-SAL_DLLPUBLIC oslMutex SAL_CALL osl_createMutex(void);
-
-/** Release the OS-structures and free mutex data-structure.
- @param Mutex the mutex-handle
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_destroyMutex(oslMutex Mutex);
-
-/** Acquire the mutex, block if already acquired by another thread.
- @param Mutex handle to a created mutex.
- @return False if system-call fails.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_acquireMutex(oslMutex Mutex);
-
-/** Try to acquire the mutex without blocking.
- @param Mutex handle to a created mutex.
- @return False if it could not be acquired.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_tryToAcquireMutex(oslMutex Mutex);
-
-/** Release the mutex.
- @param Mutex handle to a created mutex.
- @return False if system-call fails.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_releaseMutex(oslMutex Mutex);
-
-/** Returns a unique and global mutex.
- @return the global mutex.
-*/
-SAL_DLLPUBLIC oslMutex * SAL_CALL osl_getGlobalMutex(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OSL_MUTEX_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/mutex.hxx b/sal/inc/osl/mutex.hxx
deleted file mode 100644
index 18ff44444223..000000000000
--- a/sal/inc/osl/mutex.hxx
+++ /dev/null
@@ -1,272 +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 _OSL_MUTEX_HXX_
-#define _OSL_MUTEX_HXX_
-
-#ifdef __cplusplus
-
-#include <osl/mutex.h>
-
-
-namespace osl
-{
- /** A mutual exclusion synchronization object
- */
- class SAL_WARN_UNUSED Mutex {
-
- public:
- /** Create a thread-local mutex.
- @return 0 if the mutex could not be created, otherwise a handle to the mutex.
- @see ::osl_createMutex()
- */
- Mutex()
- {
- mutex = osl_createMutex();
- }
-
- /** Release the OS-structures and free mutex data-structure.
- @see ::osl_destroyMutex()
- */
- ~Mutex()
- {
- osl_destroyMutex(mutex);
- }
-
- /** Acquire the mutex, block if already acquired by another thread.
- @return sal_False if system-call fails.
- @see ::osl_acquireMutex()
- */
- sal_Bool acquire()
- {
- return osl_acquireMutex(mutex);
- }
-
- /** Try to acquire the mutex without blocking.
- @return sal_False if it could not be acquired.
- @see ::osl_tryToAcquireMutex()
- */
- sal_Bool tryToAcquire()
- {
- return osl_tryToAcquireMutex(mutex);
- }
-
- /** Release the mutex.
- @return sal_False if system-call fails.
- @see ::osl_releaseMutex()
- */
- sal_Bool release()
- {
- return osl_releaseMutex(mutex);
- }
-
- /** Returns a global static mutex object.
- The global and static mutex object can be used to initialize other
- static objects in a thread safe manner.
- @return the global mutex object
- @see ::osl_getGlobalMutex()
- */
- static Mutex * getGlobalMutex()
- {
- return (Mutex *)osl_getGlobalMutex();
- }
-
- private:
- oslMutex mutex;
-
- /** The underlying oslMutex has no reference count.
-
- Since the underlying oslMutex is not a reference counted object, copy
- constructed Mutex may work on an already destructed oslMutex object.
-
- */
- Mutex(const Mutex&);
-
- /** The underlying oslMutex has no reference count.
-
- When destructed, the Mutex object destroys the undelying oslMutex,
- which might cause severe problems in case it's a temporary object.
-
- */
- Mutex(oslMutex Mutex);
-
- /** This assignment operator is private for the same reason as
- the copy constructor.
- */
- Mutex& operator= (const Mutex&);
-
- /** This assignment operator is private for the same reason as
- the constructor taking a oslMutex argument.
- */
- Mutex& operator= (oslMutex);
- };
-
- /** A helper class for mutex objects and interfaces.
- */
- template<class T>
- class Guard
- {
- private:
- Guard( const Guard& );
- const Guard& operator = ( const Guard& );
-
- protected:
- T * pT;
- public:
-
- /** Acquires the object specified as parameter.
- */
- Guard(T * pT_) : pT(pT_)
- {
- pT->acquire();
- }
-
- /** Acquires the object specified as parameter.
- */
- Guard(T & t) : pT(&t)
- {
- pT->acquire();
- }
-
- /** Releases the mutex or interface. */
- ~Guard()
- {
- pT->release();
- }
- };
-
- /** A helper class for mutex objects and interfaces.
- */
- template<class T>
- class ClearableGuard
- {
- private:
- ClearableGuard( const ClearableGuard& );
- const ClearableGuard& operator = ( const ClearableGuard& );
- protected:
- T * pT;
- public:
-
- /** Acquires the object specified as parameter.
- */
- ClearableGuard(T * pT_) : pT(pT_)
- {
- pT->acquire();
- }
-
- /** Acquires the object specified as parameter.
- */
- ClearableGuard(T & t) : pT(&t)
- {
- pT->acquire();
- }
-
- /** Releases the mutex or interface if not already released by clear().
- */
- ~ClearableGuard()
- {
- if (pT)
- pT->release();
- }
-
- /** Releases the mutex or interface.
- */
- void clear()
- {
- if(pT)
- {
- pT->release();
- pT = NULL;
- }
- }
- };
-
- /** A helper class for mutex objects and interfaces.
- */
- template< class T >
- class ResettableGuard : public ClearableGuard< T >
- {
- private:
- ResettableGuard(ResettableGuard &); // not defined
- void operator =(ResettableGuard &); // not defined
-
- protected:
- T* pResetT;
- public:
- /** Acquires the object specified as parameter.
- */
- ResettableGuard( T* pT_ ) :
- ClearableGuard<T>( pT_ ),
- pResetT( pT_ )
- {}
-
- /** Acquires the object specified as parameter.
- */
- ResettableGuard( T& rT ) :
- ClearableGuard<T>( rT ),
- pResetT( &rT )
- {}
-
- /** Re-aquires the mutex or interface.
- */
- void reset()
- {
- if( pResetT )
- {
- this->pT = pResetT;
- this->pT->acquire();
- }
- }
- };
-
- typedef Guard<Mutex> MutexGuard;
- typedef ClearableGuard<Mutex> ClearableMutexGuard;
- typedef ResettableGuard< Mutex > ResettableMutexGuard;
-
- /** SolarMutex interface, needed for SolarMutex.
- Deprecated, used just for Application::GetSolarMutex().
- */
- class SolarMutex
- {
- public:
- /** Blocks if mutex is already in use
- */
- virtual void SAL_CALL acquire() = 0;
-
- /** Tries to get the mutex without blocking.
- */
- virtual sal_Bool SAL_CALL tryToAcquire() = 0;
-
- /** Releases the mutex.
- */
- virtual void SAL_CALL release() = 0;
-
- protected:
- SolarMutex() {}
- virtual ~SolarMutex() {}
- };
- typedef osl::Guard< SolarMutex > SolarGuard;
- typedef osl::ClearableGuard< SolarMutex > ClearableSolarGuard;
- typedef osl::ResettableGuard< SolarMutex > ResettableSolarGuard;
-}
-
-#endif /* __cplusplus */
-#endif /* _OSL_MUTEX_HXX_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/nlsupport.h b/sal/inc/osl/nlsupport.h
deleted file mode 100644
index 9af93d9237ec..000000000000
--- a/sal/inc/osl/nlsupport.h
+++ /dev/null
@@ -1,57 +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 _OSL_NLSUPPORT_H_
-#define _OSL_NLSUPPORT_H_
-
-#include "sal/config.h"
-
-#include "rtl/locale.h"
-#include "rtl/textenc.h"
-#include "sal/saldllapi.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- Determines the text encoding used by the underlying platform for the
- specified locale.
-
- @param pLocale
- the locale to return the text encoding for. If this parameter is NULL,
- the default locale of the current process is used.
-
- @returns the rtl_TextEncoding that matches the platform specific encoding
- description or RTL_TEXTENCODING_DONTKNOW if no mapping is available.
-*/
-
-SAL_DLLPUBLIC rtl_TextEncoding SAL_CALL osl_getTextEncodingFromLocale(
- rtl_Locale * pLocale );
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OSL_NLSUPPORT_H_ */
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/pipe.h b/sal/inc/osl/pipe.h
deleted file mode 100644
index 52ba8b9813e6..000000000000
--- a/sal/inc/osl/pipe.h
+++ /dev/null
@@ -1,97 +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 _OSL_PIPE_H_
-#define _OSL_PIPE_H_
-
-#include "sal/config.h"
-
-#include "osl/security.h"
-#include "rtl/ustring.h"
-#include "sal/saldllapi.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
- osl_Pipe_E_None, /* no error */
- osl_Pipe_E_NotFound, /* Pipe could not be found */
- osl_Pipe_E_AlreadyExists, /* Pipe already exists */
- osl_Pipe_E_NoProtocol, /* Protocol not available */
- osl_Pipe_E_NetworkReset, /* Network dropped connection because of reset */
- osl_Pipe_E_ConnectionAbort, /* Software caused connection abort */
- osl_Pipe_E_ConnectionReset, /* Connection reset by peer */
- osl_Pipe_E_NoBufferSpace, /* No buffer space available */
- osl_Pipe_E_TimedOut, /* Connection timed out */
- osl_Pipe_E_ConnectionRefused, /* Connection refused */
- osl_Pipe_E_invalidError, /* unmapped error: always last entry in enum! */
- osl_Pipe_E_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslPipeError;
-
-typedef sal_uInt32 oslPipeOptions;
-#define osl_Pipe_OPEN 0x0000 /* open existing pipe */
-#define osl_Pipe_CREATE 0x0001 /* create pipe and open it, fails if already existst */
-
-typedef struct oslPipeImpl * oslPipe;
-
-/**
- */
-SAL_DLLPUBLIC oslPipe SAL_CALL osl_createPipe(
- rtl_uString *strPipeName, oslPipeOptions Options, oslSecurity Security);
-
-/** decreases the refcount of the pipe.
- If the refcount drops to zero, the handle is destroyed.
- */
-SAL_DLLPUBLIC void SAL_CALL osl_releasePipe( oslPipe );
-
-/** increases the refcount of the pipe.
- */
-SAL_DLLPUBLIC void SAL_CALL osl_acquirePipe( oslPipe Pipe );
-
-/** closes the pipe, any read,write or accept actions stop immeadiatly.
- */
-SAL_DLLPUBLIC void SAL_CALL osl_closePipe( oslPipe );
-
-
-SAL_DLLPUBLIC oslPipe SAL_CALL osl_acceptPipe(oslPipe Pipe);
-
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_sendPipe(oslPipe Pipe, const void* pBuffer, sal_Int32 BufferSize);
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_receivePipe(oslPipe Pipe, void* pBuffer, sal_Int32 BufferSize);
-
-/** Reads blocking from the pipe.
- @return Number of read bytes. If less than BufferSize, the pipe was closed.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_readPipe( oslPipe Pipe, void *pBuffer, sal_Int32 BufferSize );
-
-/** Writes blocking onto the pipe.
- @return Number of written bytes. If less than BufferSize, the pipe was closed.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_writePipe( oslPipe Pipe, const void *pBuffer, sal_Int32 BufferSize );
-
-SAL_DLLPUBLIC oslPipeError SAL_CALL osl_getLastPipeError(oslPipe Pipe);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OSL_PIPE_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/pipe.hxx b/sal/inc/osl/pipe.hxx
deleted file mode 100644
index 906ca8b08fb8..000000000000
--- a/sal/inc/osl/pipe.hxx
+++ /dev/null
@@ -1,206 +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 _OSL_PIPE_HXX_
-#define _OSL_PIPE_HXX_
-
-#include <osl/pipe_decl.hxx>
-
-namespace osl
-{
- //______________________________________________________________________________
- inline Pipe::Pipe()
- : m_handle( 0 )
- {}
-
- //______________________________________________________________________________
- inline Pipe::Pipe(const ::rtl::OUString& strName, oslPipeOptions Options )
- : m_handle( osl_createPipe( strName.pData, Options , 0 ) )
- {}
-
- //______________________________________________________________________________
- inline Pipe::Pipe(const ::rtl::OUString& strName, oslPipeOptions Options,const Security & rSecurity)
- : m_handle( osl_createPipe( strName.pData, Options , rSecurity.getHandle() ) )
- {}
-
- //______________________________________________________________________________
- inline Pipe::Pipe(const Pipe& pipe )
- : m_handle( pipe.m_handle )
- {
- if( m_handle )
- osl_acquirePipe( m_handle );
- }
-
- //______________________________________________________________________________
- inline Pipe::Pipe( oslPipe pipe, __sal_NoAcquire )
- : m_handle ( pipe )
- {}
-
- //______________________________________________________________________________
- inline Pipe::Pipe(oslPipe pipe)
- : m_handle( pipe )
- {
- if( m_handle )
- osl_acquirePipe( m_handle );
- }
-
- //______________________________________________________________________________
- inline Pipe::~Pipe()
- {
- if( m_handle )
- osl_releasePipe( m_handle );
- }
-
- //______________________________________________________________________________
- inline sal_Bool Pipe::create( const ::rtl::OUString & strName,
- oslPipeOptions Options, const Security &rSec )
- {
- *this = Pipe( strName, Options, rSec );
- return is();
- }
-
- //______________________________________________________________________________
- inline sal_Bool Pipe::create( const ::rtl::OUString & strName, oslPipeOptions Options )
- {
- *this = Pipe( strName, Options );
- return is();
- }
- //______________________________________________________________________________
- inline Pipe& SAL_CALL Pipe::operator= (const Pipe& pipe)
- {
- *this = pipe.getHandle();
- return *this;
- }
-
- //______________________________________________________________________________
- inline Pipe & SAL_CALL Pipe::operator=( oslPipe pipe)
- {
- if( pipe )
- osl_acquirePipe( pipe );
- if( m_handle )
- osl_releasePipe( m_handle );
- m_handle = pipe;
- return *this;
- }
-
- //______________________________________________________________________________
- inline sal_Bool SAL_CALL Pipe::is() const
- {
- return m_handle != 0;
- }
-
- //______________________________________________________________________________
- inline sal_Bool SAL_CALL Pipe::operator==( const Pipe& rPipe ) const
- {
- return m_handle == rPipe.m_handle;
- }
-
- //______________________________________________________________________________
- inline void SAL_CALL Pipe::close()
- {
- osl_closePipe( m_handle );
- }
-
- //______________________________________________________________________________
- inline void SAL_CALL Pipe::clear()
- {
- if( m_handle )
- {
- osl_releasePipe( m_handle );
- m_handle = 0;
- }
- }
-
- //______________________________________________________________________________
- inline oslPipeError SAL_CALL Pipe::accept(StreamPipe& Connection)
- {
- Connection = StreamPipe( osl_acceptPipe( m_handle ), SAL_NO_ACQUIRE);
- if( Connection.is() )
- return osl_Pipe_E_None;
- else
- return getError();
- }
-
- //______________________________________________________________________________
- inline oslPipeError SAL_CALL Pipe::getError() const
- {
- return osl_getLastPipeError( 0 );
- }
-
- //______________________________________________________________________________
- inline oslPipe SAL_CALL Pipe::getHandle() const
- {
- return m_handle;
- }
-
- //______________________________________________________________________________
- inline StreamPipe::StreamPipe(){}
-
- //______________________________________________________________________________
- inline StreamPipe::StreamPipe(oslPipe hPipe)
- : Pipe( hPipe )
- {
- }
-
- //______________________________________________________________________________
- inline StreamPipe::StreamPipe(const ::rtl::OUString& strName, oslPipeOptions Options, const Security &rSec )
- : Pipe( strName, Options , rSec )
- {}
-
- //______________________________________________________________________________
- inline StreamPipe::StreamPipe(const ::rtl::OUString& strName, oslPipeOptions Options )
- : Pipe( strName, Options )
- {}
-
- //______________________________________________________________________________
- inline StreamPipe::StreamPipe(const StreamPipe& aPipe)
- : Pipe( aPipe )
- {}
- //______________________________________________________________________________
- inline StreamPipe::StreamPipe( oslPipe pipe, __sal_NoAcquire noacquire )
- : Pipe( pipe , noacquire )
- {}
-
- //______________________________________________________________________________
- inline sal_Int32 SAL_CALL StreamPipe::read(void* pBuffer, sal_Int32 n) const
- {
- return osl_readPipe( m_handle, pBuffer, n );
- }
-
- //______________________________________________________________________________
- inline sal_Int32 SAL_CALL StreamPipe::write(const void* pBuffer, sal_Int32 n) const
- {
- return osl_writePipe( m_handle, pBuffer , n );
- }
-
- //______________________________________________________________________________
- inline sal_Int32 SAL_CALL StreamPipe::recv(void* pBuffer, sal_Int32 BytesToRead) const
- {
- return osl_receivePipe( m_handle, pBuffer , BytesToRead );
- }
-
- //______________________________________________________________________________
- inline sal_Int32 SAL_CALL StreamPipe::send(const void* pBuffer, sal_Int32 BytesToSend) const
- {
- return osl_sendPipe( m_handle, pBuffer , BytesToSend );
- }
-
-}
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/pipe_decl.hxx b/sal/inc/osl/pipe_decl.hxx
deleted file mode 100644
index 21e07952b7ff..000000000000
--- a/sal/inc/osl/pipe_decl.hxx
+++ /dev/null
@@ -1,229 +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 _OSL_PIPE_DECL_HXX_
-#define _OSL_PIPE_DECL_HXX_
-
-#include <osl/pipe.h>
-# include <osl/security.hxx>
-#include <rtl/ustring.hxx>
-
-namespace osl {
-
-class StreamPipe;
-
-/** Represents a pipe.
-*/
-class Pipe
-{
-protected:
- oslPipe m_handle;
-
-public:
-
- /** Does not create a pipe. Use assignment operator to
- make this a useable pipe.
- */
- inline Pipe();
-
- /** Creates an insecure pipe that is accessible for all users.
- @param strName
- @param Options
- */
- inline Pipe(const ::rtl::OUString& strName, oslPipeOptions Options);
-
- /** Creates a secure pipe that access depends on the umask settings.
- @param strName
- @param Options
- @param rSecurity
- */
- inline Pipe(const ::rtl::OUString& strName, oslPipeOptions Options,const Security & rSecurity);
-
- /** Copy constructor.
- */
- inline Pipe(const Pipe& pipe);
-
- /** Constructs a Pipe reference without acquiring the handle
- */
- inline Pipe( oslPipe pipe, __sal_NoAcquire noacquire );
-
- /** Creates pipe as wrapper around the underlying oslPipe.
- @param Pipe
- */
- inline Pipe(oslPipe Pipe);
-
- /** Destructor. Destroys the underlying oslPipe.
- */
- inline ~Pipe();
-
- inline sal_Bool SAL_CALL is() const;
-
- /** Creates an insecure pipe that is accessible for all users
- with the given attributes.
- If the pipe was already created, the old one will be discarded.
- @param strName
- @param Options
- @param rSec
- @return True if socket was successfully created.
- */
- inline sal_Bool create( const ::rtl::OUString & strName,
- oslPipeOptions Options, const Security &rSec );
-
- /** Creates a secure that access rights depend on the umask settings
- with the given attributes.
-
- If socket was already created, the old one will be discarded.
- @param strName
- @param Options
- @return True if socket was successfully created.
- */
- inline sal_Bool create( const ::rtl::OUString & strName, oslPipeOptions Options = osl_Pipe_OPEN );
-
- /** releases the underlying handle
- */
- inline void SAL_CALL clear();
-
- /** Assignment operator. If pipe was already created, the old one will
- be discarded.
- */
- inline Pipe& SAL_CALL operator= (const Pipe& pipe);
-
- /** Assignment operator. If pipe was already created, the old one will
- be discarded.
- */
- inline Pipe& SAL_CALL operator= (const oslPipe pipe );
-
- /** Checks if the pipe is valid.
- @return True if the object represents a valid pipe.
- */
- inline sal_Bool SAL_CALL isValid() const;
-
- inline sal_Bool SAL_CALL operator==( const Pipe& rPipe ) const;
-
- /** Closes the pipe.
- */
- inline void SAL_CALL close();
-
- /** Accept connection on an existing pipe
- */
- inline oslPipeError SAL_CALL accept(StreamPipe& Connection);
-
-
- /** Delivers a constant decribing the last error for the pipe system.
- @return ENONE if no error occurred, invalid_PipeError if
- an unknown (unmapped) error occurred, otherwise an enum describing the
- error.
- */
- inline oslPipeError SAL_CALL getError() const;
-
- inline oslPipe SAL_CALL getHandle() const;
-};
-
-/** A pipe to send or receive a stream of data.
-*/
-class StreamPipe : public Pipe
-{
-public:
-
- /** Creates an unattached pipe. You must attach the pipe to an oslPipe
- e.g. by using the operator=(oslPipe), before you can use the stream-
- functionality of the object.
- */
- inline StreamPipe();
-
- /** Creates pipe as wrapper around the underlying oslPipe.
- @param Pipe
- */
- inline StreamPipe(oslPipe Pipe);
-
- /** Copy constructor.
- @param Pipe
- */
- inline StreamPipe(const StreamPipe& Pipe);
-
- /** Creates a pipe.
- @param strName
- @param Options
- */
- inline StreamPipe(const ::rtl::OUString& strName, oslPipeOptions Options = osl_Pipe_OPEN);
-
- /** Creates a pipe.
- @param strName
- @param Options
- @param rSec
- */
- inline StreamPipe(const ::rtl::OUString& strName, oslPipeOptions Options, const Security &rSec );
-
- /** Constructs a Pipe reference without acquiring the handle
- */
- inline StreamPipe( oslPipe pipe, __sal_NoAcquire noacquire );
-
- /** Attaches the oslPipe to this object. If the object
- already was attached to an oslPipe, the old one will
- be closed and destroyed.
- @param Pipe
- */
- inline StreamPipe & SAL_CALL operator=(oslPipe Pipe);
-
- /** Assignment operator
- */
- inline StreamPipe& SAL_CALL operator=(const Pipe& pipe);
-
- /** Tries to receives BytesToRead data from the connected pipe,
-
- @param pBuffer [out] Points to a buffer that will be filled with the received
- data.
- @param BytesToRead [in] The number of bytes to read. pBuffer must have at least
- this size.
- @return the number of received bytes.
- */
- inline sal_Int32 SAL_CALL recv(void* pBuffer, sal_Int32 BytesToRead) const;
-
- /** Tries to sends BytesToSend data from the connected pipe.
-
- @param pBuffer [in] Points to a buffer that contains the send-data.
- @param BytesToSend [in] The number of bytes to send. pBuffer must have at least
- this size.
- @return the number of transfered bytes.
- */
- inline sal_Int32 SAL_CALL send(const void* pBuffer, sal_Int32 BytesToSend) const;
-
- /** Retrieves n bytes from the stream and copies them into pBuffer.
- The method avoids incomplete reads due to packet boundaries.
- @param pBuffer receives the read data.
- @param n the number of bytes to read. pBuffer must be large enough
- to hold the n bytes!
- @return the number of read bytes. The number will only be smaller than
- n if an exceptional condition (e.g. connection closed) occurs.
- */
- inline sal_Int32 SAL_CALL read(void* pBuffer, sal_Int32 n) const;
-
- /** Writes n bytes from pBuffer to the stream. The method avoids
- incomplete writes due to packet boundaries.
- @param pBuffer contains the data to be written.
- @param n the number of bytes to write.
- @return the number of written bytes. The number will only be smaller than
- n if an exceptional condition (e.g. connection closed) occurs.
- */
- sal_Int32 SAL_CALL write(const void* pBuffer, sal_Int32 n) const;
-};
-
-}
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/process.h b/sal/inc/osl/process.h
deleted file mode 100644
index 241f9a857552..000000000000
--- a/sal/inc/osl/process.h
+++ /dev/null
@@ -1,451 +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 _OSL_PROCESS_H_
-#define _OSL_PROCESS_H_
-
-#include "sal/config.h"
-
-#include "osl/file.h"
-#include "osl/pipe.h"
-#include "osl/security.h"
-#include "osl/socket.h"
-#include "osl/time.h"
-#include "rtl/locale.h"
-#include "rtl/textenc.h"
-#include "rtl/ustring.h"
-#include "sal/saldllapi.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-typedef sal_Int32 oslProcessOption;
-#define osl_Process_WAIT 0x0001 /* wait for completion */
-#define osl_Process_SEARCHPATH 0x0002 /* search path for executable */
-#define osl_Process_DETACHED 0x0004 /* run detached */
-#define osl_Process_NORMAL 0x0000 /* run in normal window */
-#define osl_Process_HIDDEN 0x0010 /* run hidden */
-#define osl_Process_MINIMIZED 0x0020 /* run in minimized window */
-#define osl_Process_MAXIMIZED 0x0040 /* run in maximized window */
-#define osl_Process_FULLSCREEN 0x0080 /* run in fullscreen window */
-
-typedef sal_Int32 oslProcessData;
-
-/* defines for osl_getProcessInfo , can be OR'ed */
-#define osl_Process_IDENTIFIER 0x0001 /* retrieves the process identifier */
-#define osl_Process_EXITCODE 0x0002 /* retrieves exit code of the process */
-#define osl_Process_CPUTIMES 0x0004 /* retrieves used cpu time */
-#define osl_Process_HEAPUSAGE 0x0008 /* retrieves the used size of heap */
-
-typedef sal_uInt32 oslProcessIdentifier;
-typedef sal_uInt32 oslProcessExitCode;
-
-typedef enum {
- osl_Process_E_None, /* no error */
- osl_Process_E_NotFound, /* image not found */
- osl_Process_E_TimedOut, /* timout occurred */
- osl_Process_E_NoPermission, /* permission denied */
- osl_Process_E_Unknown, /* unknown error */
- osl_Process_E_InvalidError, /* unmapped error */
- osl_Process_E_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslProcessError;
-
-typedef enum {
- osl_Process_TypeNone, /* no descriptor */
- osl_Process_TypeSocket, /* socket */
- osl_Process_TypeFile, /* file */
- osl_Process_TypePipe, /* pipe */
- osl_Process_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslDescriptorType;
-
-typedef sal_Int32 oslDescriptorFlag;
-#define osl_Process_DFNONE 0x0000
-#define osl_Process_DFWAIT 0x0001
-
-#ifdef SAL_W32
-# pragma pack(push, 8)
-#endif
-
-typedef struct {
- sal_uInt32 Size;
- oslProcessData Fields;
- oslProcessIdentifier Ident;
- oslProcessExitCode Code;
- TimeValue UserTime;
- TimeValue SystemTime;
- sal_uInt32 HeapUsage;
-} oslProcessInfo;
-
-#if defined( SAL_W32)
-# pragma pack(pop)
-#endif
-
-/** Process handle
-
- @see osl_executeProcess
- @see osl_terminateProcess
- @see osl_freeProcessHandle
- @see osl_getProcessInfo
- @see osl_joinProcess
-*/
-typedef void* oslProcess;
-
-/** Execute a process.
-
- Executes the program image provided in strImageName in a new process.
-
- @param ustrImageName
- [in] The file URL of the executable to be started.
- Can be NULL in this case the file URL of the executable must be the first element
- in ustrArguments.
-
- @param ustrArguments
- [in] An array of argument strings. Can be NULL if strImageName is not NULL.
- If strImageName is NULL it is expected that the first element contains
- the file URL of the executable to start.
-
- @param nArguments
- [in] The number of arguments provided. If this number is 0 strArguments will be ignored.
-
- @param Options
- [in] A combination of int-constants to describe the mode of execution.
-
- @param Security
- [in] The user and his rights for which the process is started. May be NULL in which case
- the process will be started in the context of the current user.
-
- @param ustrDirectory
- [in] The file URL of the working directory of the new proces. If the specified directory
- does not exist or is inaccessible the working directory of the newly created process
- is undefined. If this parameter is NULL or the caller provides an empty string the
- new process will have the same current working directory as the calling process.
-
- @param ustrEnvironments
- [in] An array of strings describing environment variables that should be merged into the
- environment of the new process. Each string has to be in the form "variable=value".
- This parameter can be NULL in which case the new process gets the same environment
- as the parent process.
-
- @param nEnvironmentVars
- [in] The number of environment variables to set.
-
- @param pProcess
- [out] Pointer to a oslProcess variable, wich receives the handle of the newly created process.
- This parameter must not be NULL.
-
- @return
- <dl>
- <dt>osl_Process_E_None</dt>
- <dd>on success</dd>
- <dt>osl_Process_E_NotFound</dt>
- <dd>if the specified executable could not be found</dd>
- <dt>osl_Process_E_InvalidError</dt>
- <dd>if invalid parameters will be detected</dd>
- <dt>osl_Process_E_Unknown</dt>
- <dd>if arbitrary other errors occur</dd>
- </dl>
-
- @see oslProcessOption
- @see osl_executeProcess_WithRedirectedIO
- @see osl_freeProcessHandle
- @see osl_loginUser
-*/
-SAL_DLLPUBLIC oslProcessError SAL_CALL osl_executeProcess(
- rtl_uString* ustrImageName,
- rtl_uString* ustrArguments[],
- sal_uInt32 nArguments,
- oslProcessOption Options,
- oslSecurity Security,
- rtl_uString* ustrDirectory,
- rtl_uString* ustrEnvironments[],
- sal_uInt32 nEnvironmentVars,
- oslProcess* pProcess);
-
-
-/** Execute a process and redirect child process standard IO.
-
- @param strImageName
- [in] The file URL of the executable to be started.
- Can be NULL in this case the file URL of the executable must be the first element
- in ustrArguments.
-
- @param ustrArguments
- [in] An array of argument strings. Can be NULL if strImageName is not NULL.
- If strImageName is NULL it is expected that the first element contains
- the file URL of the executable to start.
-
- @param nArguments
- [in] The number of arguments provided. If this number is 0 strArguments will be ignored.
-
- @param Options
- [in] A combination of int-constants to describe the mode of execution.
-
- @param Security
- [in] The user and his rights for which the process is started. May be NULL in which case
- the process will be started in the context of the current user.
-
- @param ustrDirectory
- [in] The file URL of the working directory of the new proces. If the specified directory
- does not exist or is inaccessible the working directory of the newly created process
- is undefined. If this parameter is NULL or the caller provides an empty string the
- new process will have the same current working directory as the calling process.
-
- @param ustrEnvironments
- [in] An array of strings describing environment variables that should be merged into the
- environment of the new process. Each string has to be in the form "variable=value".
- This parameter can be NULL in which case the new process gets the same environment
- as the parent process.
-
- @param nEnvironmentVars
- [in] The number of environment variables to set.
-
- @param pProcess
- [out] Pointer to a oslProcess variable, wich receives the handle of the newly created process.
- This parameter must not be NULL.
-
- @param pChildInputWrite
- [in] Pointer to a oslFileHandle variable that receives the handle which can be used to write
- to the child process standard input device. The returned handle is not random accessible.
- The handle has to be closed with osl_closeFile if no longer used. This parameter can be NULL.
-
- @param pChildOutputRead
- [in] Pointer to a oslFileHandle variable that receives the handle which can be used to read from
- the child process standard output device. The returned handle is not random accessible.
- The Handle has to be closed with osl_closeFile if no longer used. This parameter can be NULL.
-
- @param pChildErrorRead
- [in] Pointer to a oslFileHandle variable that receives the handle which can be used to read from
- the child process standard error device. The returned handle is not random accessible.
- The Handle has to be closed with osl_closeFile if no longer used. This parameter can be NULL.
-
- @return
- <dl>
- <dt>osl_Process_E_None</dt>
- <dd>on success</dd>
- <dt>osl_Process_E_NotFound</dt>
- <dd>if the specified executable could not be found</dd>
- <dt>osl_Process_E_InvalidError</dt>
- <dd>if invalid parameters will be detected</dd>
- <dt>osl_Process_E_Unknown</dt>
- <dd>if arbitrary other errors occur</dd>
- </dl>
-
- @see oslProcessOption
- @see osl_executeProcess
- @see osl_freeProcessHandle
- @see osl_loginUser
- @see osl_closeFile
-*/
-SAL_DLLPUBLIC oslProcessError SAL_CALL osl_executeProcess_WithRedirectedIO(
- rtl_uString* strImageName,
- rtl_uString* ustrArguments[],
- sal_uInt32 nArguments,
- oslProcessOption Options,
- oslSecurity Security,
- rtl_uString* ustrDirectory,
- rtl_uString* ustrEnvironments[],
- sal_uInt32 nEnvironmentVars,
- oslProcess* pProcess,
- oslFileHandle* pChildInputWrite,
- oslFileHandle* pChildOutputRead,
- oslFileHandle* pChildErrorRead);
-
-/** Terminate a process
- @param Process [in] the handle of the process to be terminated
-
- @see osl_executeProcess
- @see osl_getProcess
- @see osl_joinProcess
- */
-SAL_DLLPUBLIC oslProcessError SAL_CALL osl_terminateProcess(
- oslProcess Process);
-
-
-/** @deprecated
- Retrieve the process handle of a process identifier
- @param Ident [in] a process identifier
-
- @return the process handle on success, NULL in all other cases
- */
-SAL_DLLPUBLIC oslProcess SAL_CALL osl_getProcess(
- oslProcessIdentifier Ident);
-
-
-/** Free the specified proces-handle.
- @param Process [in]
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_freeProcessHandle(
- oslProcess Process);
-
-
-/** Wait for completation of the specified childprocess.
- @param Process [in]
- @return ols_Process_E_None
- @see osl_executeProcess
-*/
-SAL_DLLPUBLIC oslProcessError SAL_CALL osl_joinProcess(
- oslProcess Process);
-
-/** Wait with a timeout for the completion of the specified child
- process.
-
- @param Process [in]
- A process identifier.
-
- @param pTimeout [in]
- A timeout value or NULL for infinite waiting.
- The unit of resolution is second.
-
- @return
- osl_Process_E_None on success
- osl_Process_E_TimedOut waiting for the child process timed out
- osl_Process_E_Unknown an error occurred or the parameter are invalid
-
- @see osl_executeProcess
-*/
-SAL_DLLPUBLIC oslProcessError SAL_CALL osl_joinProcessWithTimeout(
- oslProcess Process, const TimeValue* pTimeout);
-
-/** Retrieves information about a Process
- @param[in] Process the process handle of the process
- @param[in] Fields the information which is to be retrieved
- this can be one or more of
- osl_Process_IDENTIFIER
- osl_Process_EXITCODE
- osl_Process_CPUTIMES
- osl_Process_HEAPUSAGE
- @param[out] pInfo a pointer to a vaid oslProcessInfo structure.
- the Size field has to be initialized with the size
- of the oslProcessInfo structure.
- on success the Field member holds the (or'ed)
- retrieved valid information fields.
- @return osl_Process_E_None on success, osl_Process_E_Unknown on failure.
- */
-SAL_DLLPUBLIC oslProcessError SAL_CALL osl_getProcessInfo(
- oslProcess Process, oslProcessData Fields, oslProcessInfo* pInfo);
-
-/** Get the filename of the executable.
- @param strFile [out] the string that receives the executable file path.
- @return osl_Process_E_None or does not return.
- @see osl_executeProcess
-*/
-SAL_DLLPUBLIC oslProcessError SAL_CALL osl_getExecutableFile(
- rtl_uString **strFile);
-
-/** @return the number of commandline arguments passed to the main-function of
- this process
- @see osl_getCommandArg
-*/
-SAL_DLLPUBLIC sal_uInt32 SAL_CALL osl_getCommandArgCount(void);
-
-/** Get the nArg-th command-line argument passed to the main-function of this process.
- @param nArg [in] The number of the argument to return.
- @param strCommandArg [out] The string receives the nArg-th command-line argument.
- @return osl_Process_E_None or does not return.
- @see osl_executeProcess
-*/
-SAL_DLLPUBLIC oslProcessError SAL_CALL osl_getCommandArg(
- sal_uInt32 nArg, rtl_uString **strCommandArg);
-
-/** Set the command-line arguments as passed to the main-function of this process.
-
- Depricated: This function is only for internal use. Passing the args from main will
- only work for Unix, on Windows there's no effect, the full command line will automtically
- be taken. This is due to Windows 9x/ME limitation that don't allow UTF-16 wmain to provide
- a osl_setCommandArgsU( int argc, sal_Unicode **argv );
-
- @param argc [in] The number of elements in the argv array.
- @param argv [in] The array of command-line arguments.
- @see osl_getExecutableFile
- @see osl_getCommandArgCount
- @see osl_getCommandArg
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_setCommandArgs (int argc, char **argv);
-
-/** Get the value of one enviroment variable.
- @param strVar [in] denotes the name of the variable to get.
- @param strValue [out] string that receives the value of environment variable.
-*/
-SAL_DLLPUBLIC oslProcessError SAL_CALL osl_getEnvironment(
- rtl_uString *strVar, rtl_uString **strValue);
-
-/** Set the value of one enviroment variable.
- @param strVar [in] denotes the name of the variable to set.
- @param strValue [in] string of the new value of environment variable.
-
- @since UDK 3.2.13
-*/
-SAL_DLLPUBLIC oslProcessError SAL_CALL osl_setEnvironment(
- rtl_uString *strVar, rtl_uString *strValue);
-
-/** Unsets the value of one enviroment variable.
- @param strVar [in] denotes the name of the variable to unset.
-
- @since UDK 3.2.13
-*/
-SAL_DLLPUBLIC oslProcessError SAL_CALL osl_clearEnvironment(
- rtl_uString *strVar);
-
-/** Get the working directory of the current process as a file URL.
-
- The file URL is encoded as common for the OSL file API.
- @param pustrWorkingDir [out] string that receives the working directory file URL.
-*/
-
-SAL_DLLPUBLIC oslProcessError SAL_CALL osl_getProcessWorkingDir(
- rtl_uString **pustrWorkingDir );
-
-/** Get the locale the process is currently running in.
-
- The unix implementation caches the value it returns, so if you have to change the locale
- your are running in, you will have to use osl_setProcessLocale therefor.
-
- @param ppLocale [out] a pointer that receives the currently selected locale structure
- @see osl_setProcessLocale
-*/
-
-SAL_DLLPUBLIC oslProcessError SAL_CALL osl_getProcessLocale(
- rtl_Locale ** ppLocale );
-
-/** Change the locale of the process.
-
- @param pLocale [in] a pointer to the locale to be set
- @see osl_getProcessLocale
-*/
-
-SAL_DLLPUBLIC oslProcessError SAL_CALL osl_setProcessLocale(
- rtl_Locale * pLocale );
-
-
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_sendResourcePipe(
- oslPipe Pipe, oslSocket Socket );
-
-SAL_DLLPUBLIC oslSocket SAL_CALL osl_receiveResourcePipe(
- oslPipe Pipe );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OSL_PROCESS_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/profile.h b/sal/inc/osl/profile.h
deleted file mode 100644
index fcbf898c5754..000000000000
--- a/sal/inc/osl/profile.h
+++ /dev/null
@@ -1,145 +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 _OSL_PROFILE_H_
-#define _OSL_PROFILE_H_
-
-#include "sal/config.h"
-
-#include "rtl/ustring.h"
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef sal_uInt32 oslProfileOption;
-
-#define osl_Profile_DEFAULT 0x0000
-#define osl_Profile_SYSTEM 0x0001 /* use system depended functinality */
-#define osl_Profile_READLOCK 0x0002 /* lock file for reading */
-#define osl_Profile_WRITELOCK 0x0004 /* lock file for writing */
-#define osl_Profile_FLUSHWRITE 0x0010 /* writing only with flush */
-
-
-typedef void* oslProfile;
-
-/** Deprecated API.
- Open or create a configuration profile.
- @return 0 if the profile could not be created, otherwise a handle to the profile.
- @deprecated
-*/
-SAL_DLLPUBLIC oslProfile SAL_CALL osl_openProfile(
- rtl_uString *strProfileName, oslProfileOption Options);
-
-/** Deprecated API.
- Close the opened profile an flush all data to the disk.
- @param Profile handle to a opened profile.
- @deprecated
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_closeProfile(
- oslProfile Profile);
-
-
-/** Deprecated API.
- @deprecated
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_flushProfile(
- oslProfile Profile);
-/** Deprecated API.
- @deprecated
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_readProfileString(
- oslProfile Profile,
- const sal_Char* pszSection, const sal_Char* pszEntry,
- sal_Char* pszString, sal_uInt32 MaxLen,
- const sal_Char* pszDefault);
-/** Deprecated API.
- @deprecated
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_readProfileBool(
- oslProfile Profile,
- const sal_Char* pszSection, const sal_Char* pszEntry,
- sal_Bool Default);
-/** Deprecated API.
- @deprecated
-*/
-SAL_DLLPUBLIC sal_uInt32 SAL_CALL osl_readProfileIdent(
- oslProfile Profile,
- const sal_Char* pszSection, const sal_Char* pszEntry,
- sal_uInt32 FirstId, const sal_Char* Strings[],
- sal_uInt32 Default);
-
-/** Deprecated API.
- @deprecated
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_writeProfileString(
- oslProfile Profile,
- const sal_Char* pszSection, const sal_Char* pszEntry,
- const sal_Char* pszString);
-/** Deprecated API.
- @deprecated
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_writeProfileBool(
- oslProfile Profile,
- const sal_Char* pszSection, const sal_Char* pszEntry,
- sal_Bool Value);
-/** Deprecated API.
- @deprecated
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_writeProfileIdent(
- oslProfile Profile,
- const sal_Char* pszSection, const sal_Char* pszEntry,
- sal_uInt32 FirstId, const sal_Char* Strings[],
- sal_uInt32 Value);
-
-/** Deprecated API.
- Acquire the mutex, block if already acquired by another thread.
- @return False if section or entry could not be found.
- @deprecated
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_removeProfileEntry(
- oslProfile Profile,
- const sal_Char *pszSection, const sal_Char *pszEntry);
-
-/** Deprecated API.
- Get all entries belonging to the specified section.
- @return Pointer to a array of pointers.
- @deprecated
-*/
-SAL_DLLPUBLIC sal_uInt32 SAL_CALL osl_getProfileSectionEntries(
- oslProfile Profile, const sal_Char *pszSection,
- sal_Char* pszBuffer, sal_uInt32 MaxLen);
-
-/** Deprecated API.
- Get all section entries
- @return Pointer to a array of pointers.
- @deprecated
-*/
-SAL_DLLPUBLIC sal_uInt32 SAL_CALL osl_getProfileSections(
- oslProfile Profile, sal_Char* pszBuffer, sal_uInt32 MaxLen);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OSL_PROFILE_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/profile.hxx b/sal/inc/osl/profile.hxx
deleted file mode 100644
index 452a37cbff39..000000000000
--- a/sal/inc/osl/profile.hxx
+++ /dev/null
@@ -1,196 +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 _OSL_PROFILE_HXX_
-#define _OSL_PROFILE_HXX_
-
-#include "profile.h"
-#include <rtl/ustring.hxx>
-#include <string.h>
-#include <list>
-
-namespace osl {
-
- typedef oslProfileOption ProfileOption;
-
- const int Profile_DEFAULT = osl_Profile_DEFAULT;
- const int Profile_SYSTEM = osl_Profile_SYSTEM; /* use system depended functinality */
- const int Profile_READLOCK = osl_Profile_READLOCK; /* lock file for reading */
- const int Profile_WRITELOCK = osl_Profile_WRITELOCK; /* lock file for writing */
-
- /** Deprecated API.
- @deprecated
- */
- class Profile {
- oslProfile profile;
-
- public:
- /** Open or create a configuration profile.
- @return 0 if the profile could not be created, otherwise a handle to the profile.
- */
- Profile(const rtl::OUString strProfileName, oslProfileOption Options = Profile_DEFAULT )
- {
- profile = osl_openProfile(strProfileName.pData, Options);
- if( ! profile )
- throw std::exception();
- }
-
-
- /** Close the opened profile an flush all data to the disk.
- */
- ~Profile()
- {
- osl_closeProfile(profile);
- }
-
-
- sal_Bool flush()
- {
- return osl_flushProfile(profile);
- }
-
- rtl::OString readString( const rtl::OString& rSection, const rtl::OString& rEntry,
- const rtl::OString& rDefault)
- {
- sal_Char aBuf[1024];
- return osl_readProfileString( profile,
- rSection.getStr(),
- rEntry.getStr(),
- aBuf,
- sizeof( aBuf ),
- rDefault.getStr() ) ? rtl::OString( aBuf ) : rtl::OString();
-
- }
-
- sal_Bool readBool( const rtl::OString& rSection, const rtl::OString& rEntry, sal_Bool bDefault )
- {
- return osl_readProfileBool( profile, rSection.getStr(), rEntry.getStr(), bDefault );
- }
-
- sal_uInt32 readIdent(const rtl::OString& rSection, const rtl::OString& rEntry,
- sal_uInt32 nFirstId, const std::list< rtl::OString >& rStrings,
- sal_uInt32 nDefault)
- {
- int nItems = rStrings.size();
- const sal_Char** pStrings = new const sal_Char*[ nItems+1 ];
- std::list< rtl::OString >::const_iterator it = rStrings.begin();
- nItems = 0;
- while( it != rStrings.end() )
- {
- pStrings[ nItems++ ] = it->getStr();
- ++it;
- }
- pStrings[ nItems ] = NULL;
- sal_uInt32 nRet = osl_readProfileIdent(profile, rSection.getStr(), rEntry.getStr(), nFirstId, pStrings, nDefault);
- delete pStrings;
- return nRet;
- }
-
- sal_Bool writeString(const rtl::OString& rSection, const rtl::OString& rEntry,
- const rtl::OString& rString)
- {
- return osl_writeProfileString(profile, rSection.getStr(), rEntry.getStr(), rString.getStr());
- }
-
- sal_Bool writeBool(const rtl::OString& rSection, const rtl::OString& rEntry, sal_Bool Value)
- {
- return osl_writeProfileBool(profile, rSection.getStr(), rEntry.getStr(), Value);
- }
-
- sal_Bool writeIdent(const rtl::OString& rSection, const rtl::OString& rEntry,
- sal_uInt32 nFirstId, const std::list< rtl::OString >& rStrings,
- sal_uInt32 nValue)
- {
- int nItems = rStrings.size();
- const sal_Char** pStrings = new const sal_Char*[ nItems+1 ];
- std::list< rtl::OString >::const_iterator it = rStrings.begin();
- nItems = 0;
- while( it != rStrings.end() )
- {
- pStrings[ nItems++ ] = it->getStr();
- ++it;
- }
- pStrings[ nItems ] = NULL;
- sal_Bool bRet =
- osl_writeProfileIdent(profile, rSection.getStr(), rEntry.getStr(), nFirstId, pStrings, nValue );
- delete pStrings;
- return bRet;
- }
-
- /** Remove an entry from a section.
- @param rSection Name of the section.
- @param rEntry Name of the entry to remove.
- @return False if section or entry could not be found.
- */
- sal_Bool removeEntry(const rtl::OString& rSection, const rtl::OString& rEntry)
- {
- return osl_removeProfileEntry(profile, rSection.getStr(), rEntry.getStr());
- }
-
- /** Get all entries belonging to the specified section.
- @param rSection Name of the section.
- @return Pointer to a array of pointers.
- */
- std::list< rtl::OString > getSectionEntries(const rtl::OString& rSection )
- {
- std::list< rtl::OString > aEntries;
-
- // count buffer size necessary
- int n = osl_getProfileSectionEntries( profile, rSection.getStr(), NULL, 0 );
- if( n > 1 )
- {
- sal_Char* pBuf = new sal_Char[ n+1 ];
- osl_getProfileSectionEntries( profile, rSection.getStr(), pBuf, n+1 );
- int nLen;
- for( n = 0; ( nLen = strlen( pBuf+n ) ); n += nLen+1 )
- aEntries.push_back( rtl::OString( pBuf+n ) );
- delete pBuf;
- }
-
- return aEntries;
- }
-
- /** Get all section entries
- @return Pointer to a array of pointers.
- */
- std::list< rtl::OString > getSections()
- {
- std::list< rtl::OString > aSections;
-
- // count buffer size necessary
- int n = osl_getProfileSections( profile, NULL, 0 );
- if( n > 1 )
- {
- sal_Char* pBuf = new sal_Char[ n+1 ];
- osl_getProfileSections( profile, pBuf, n+1 );
- int nLen;
- for( n = 0; ( nLen = strlen( pBuf+n ) ); n += nLen+1 )
- aSections.push_back( rtl::OString( pBuf+n ) );
- delete pBuf;
- }
-
- return aSections;
- }
- };
-}
-
-#endif /* _OSL_PROFILE_HXX_ */
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/security.h b/sal/inc/osl/security.h
deleted file mode 100644
index b24625761731..000000000000
--- a/sal/inc/osl/security.h
+++ /dev/null
@@ -1,163 +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 _OSL_SECURITY_H_
-#define _OSL_SECURITY_H_
-
-#include "sal/config.h"
-
-#include "rtl/ustring.h"
-#include "sal/saldllapi.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
- osl_Security_E_None,
- osl_Security_E_UserUnknown,
- osl_Security_E_WrongPassword,
- osl_Security_E_Unknown,
- osl_Security_E_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslSecurityError;
-
-/** Process handle
- @see osl_loginUser
- @see osl_freeSecurityHandle
- @see osl_executeProcess
-*/
-typedef void* oslSecurity;
-
-/** Create a security handle for the current user.
- @return a security handle or NULL on failure.
- @see osl_freeSecurityHandle
- @see osl_executeProcess
- @see osl_executeApplication
-*/
-SAL_DLLPUBLIC oslSecurity SAL_CALL osl_getCurrentSecurity(void);
-
-/** Deprecated API
- Create a security handle for the denoted user.
- Try to log in the user on the local system.
- @param[in] strUserName denotes the name of the user to logg in.
- @param[in] strPasswd the password for this user.
- @param[out] pSecurity returns the security handle if user could be logged in.
- @return osl_Security_E_None if user could be logged in, otherwise an error-code.
- @see osl_freeSecurityHandle
- @see osl_executeProcess
- @see osl_executeApplication
-*/
-SAL_DLLPUBLIC oslSecurityError SAL_CALL osl_loginUser(
- rtl_uString *strUserName,
- rtl_uString *strPasswd,
- oslSecurity *pSecurity
- );
-
-/** Create a security handle for the denoted user.
- Try to log in the user on the denoted file server. On success the homedir will be
- the maped drive on this server.
- @param[in] strUserName denotes the name of the user to logg in.
- @param[in] strPasswd the password for this user.
- @param[in] strFileServer denotes the file server on wich the user is logged in.
- @param[out] pSecurity returns the security handle if user could be logged in.
- @return osl_Security_E_None if user could be logged in, otherwise an error-code.
- @see osl_freeSecurityHandle
- @see osl_executeProcess
- @see osl_executeApplication
-*/
-SAL_DLLPUBLIC oslSecurityError SAL_CALL osl_loginUserOnFileServer(
- rtl_uString *strUserName,
- rtl_uString *strPasswd,
- rtl_uString *strFileServer,
- oslSecurity *pSecurity
- );
-
-/** Query if the user who is denotes by this security has administrator rigths.
- @param[in] Security the security handle for th user.
- @return True, if the user has adminsitrator rights, otherwise false.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_isAdministrator(
- oslSecurity Security);
-
-/** Free the security handle, created by osl_loginUser or osl_getCurrentSecurity.
- @param[in] Security the security handle.
- @see osl_loginUser
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_freeSecurityHandle(
- oslSecurity Security);
-
-/** Get the login ident for the user of this security handle.
- @param[in] Security the security handle.
- @param[out] strIdent the string that receives the ident on success.
- @return True, if the security handle is valid, otherwise False.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getUserIdent(
- oslSecurity Security, rtl_uString **strIdent);
-
-/** Get the login name for the user of this security handle.
- @param[in] Security the security handle.
- @param[out] strName the string that receives the user name on success.
- @return True, if the security handle is valid, otherwise False.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getUserName(
- oslSecurity Security, rtl_uString **strName);
-
-/** Get the home directory of the user of this security handle.
- @param[in] Security the security handle.
- @param[out] strDirectory the string that receives the directory path on success.
- @return True, if the security handle is valid, otherwise False.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getHomeDir(
- oslSecurity Security, rtl_uString **strDirectory);
-
-/** Get the directory for configuration data of the user of this security handle.
- @param[in] Security the security handle.
- @param[out] strDirectory the string that receives the directory path on success.
- @return True, if the security handle is valid, otherwise False.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getConfigDir(
- oslSecurity Security, rtl_uString **strDirectory);
-
-
-/** Load Profile of the User
- Implemented just for Windows
- @param[in] Security previously fetch Security of the User
- @return True if the Profile could successfully loaded, False otherwise.
-*/
-
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_loadUserProfile(
- oslSecurity Security);
-
-
-/** Unload a User Profile
- Implemented just for Windows
- @param[in] Security previously fetch Security of the User
- @return nothing is returned!
-*/
-
-SAL_DLLPUBLIC void SAL_CALL osl_unloadUserProfile(
- oslSecurity Security);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OSL_SECURITY_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/security.hxx b/sal/inc/osl/security.hxx
deleted file mode 100644
index 941b2c5980a8..000000000000
--- a/sal/inc/osl/security.hxx
+++ /dev/null
@@ -1,103 +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 _OSL_SECURITY_HXX_
-#define _OSL_SECURITY_HXX_
-
-#include <rtl/ustring.hxx>
-
-#ifndef _OSL_SECURITY_DECL_HXX
-# include <osl/security_decl.hxx>
-#endif
-
-namespace osl
-{
-
-inline Security::Security()
-{
- m_handle = osl_getCurrentSecurity();
-}
-
-inline Security::~Security()
-{
- osl_freeSecurityHandle(m_handle);
-}
-
-inline sal_Bool Security::logonUser(const rtl::OUString& strName,
- const rtl::OUString& strPasswd)
-{
- osl_freeSecurityHandle(m_handle);
-
- m_handle = 0;
-
- return (osl_loginUser( strName.pData, strPasswd.pData, &m_handle)
- == osl_Security_E_None);
-}
-
-inline sal_Bool Security::logonUser( const rtl::OUString& strName,
- const rtl::OUString& strPasswd,
- const rtl::OUString& strFileServer )
-{
- osl_freeSecurityHandle(m_handle);
-
- m_handle = NULL;
-
- return (osl_loginUserOnFileServer(strName.pData, strPasswd.pData, strFileServer.pData, &m_handle)
- == osl_Security_E_None);
-}
-
-inline sal_Bool Security::getUserIdent( rtl::OUString& strIdent) const
-{
- return osl_getUserIdent( m_handle, &strIdent.pData );
-}
-
-
-inline sal_Bool Security::getUserName( rtl::OUString& strName ) const
-{
- return osl_getUserName( m_handle, &strName.pData );
-}
-
-
-inline sal_Bool Security::getHomeDir( rtl::OUString& strDirectory) const
-{
- return osl_getHomeDir(m_handle, &strDirectory.pData );
-}
-
-
-inline sal_Bool Security::getConfigDir( rtl::OUString& strDirectory ) const
-{
- return osl_getConfigDir( m_handle, &strDirectory.pData );
-}
-
-inline sal_Bool Security::isAdministrator() const
-{
- return osl_isAdministrator(m_handle);
-}
-
-inline oslSecurity Security::getHandle() const
-{
- return m_handle;
-}
-
-
-}
-
-#endif // _OSL_SECURITY_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/security_decl.hxx b/sal/inc/osl/security_decl.hxx
deleted file mode 100644
index ba2f4195d769..000000000000
--- a/sal/inc/osl/security_decl.hxx
+++ /dev/null
@@ -1,110 +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 _OSL_SECURITY_DECL_HXX_
-#define _OSL_SECURITY_DECL_HXX_
-
-#include <rtl/ustring.hxx>
-# include <osl/security.h>
-
-namespace osl
-{
-
-/** capsulate security information for one user.
- A object of this class is used to execute a process with the rights an
- security options of a scecified user.
- @see Process::executeProcess
-*/
-class Security
-{
-protected:
- oslSecurity m_handle;
-
-public:
- /// constructor
- inline Security();
- /// destructor
- inline ~Security();
- /** get the security information for one user.
- The underlying operating system is asked for this information.
- @param[in] strName denotes the name of the user
- @param[in] strPasswd denotes the password of this user
- @return True, if the specified user is known by the underlying operating system,
- otherwise False
- */
- inline sal_Bool SAL_CALL logonUser(const rtl::OUString& strName,
- const rtl::OUString& strPasswd);
- /** get the security information for one user.
-
- @verbatim
- This method will try to login the user at the denoted file server.
- If a network resource named \\server\username exists and this resource
- could be connected by this user, the methos will return true and getHomeDir
- will return \\server\username.
- @endverbatim
- @param[in] strName denotes the name of the user
- @param[in] strPasswd denotes the password of this user
- @param[in] strFileServer denotes the file server to login to
- @return True, if the specified user is known by file server and the
- could be connected, otherwise False
- */
- inline sal_Bool SAL_CALL logonUser(const rtl::OUString & strName,
- const rtl::OUString & strPasswd,
- const rtl::OUString & strFileServer);
-
- /** get the ident of the logged in user.
- @param[out] strIdent is the OUString which returns the name
- @return True, if any user is successfully logged in, otherwise False
- */
- inline sal_Bool SAL_CALL getUserIdent( rtl::OUString& strIdent) const;
-
- /** get the name of the logged in user.
- @param[out] strName is the OUString which returns the name
- @return True, if any user is successfully logged in, otherwise False
- */
- inline sal_Bool SAL_CALL getUserName( rtl::OUString& strName) const;
-
- /** get the home directory of the logged in user.
- @param[out] strDirectory is the OUString which returns the directory name
- @return True, if any user is successfully logged in, otherwise False
- */
- inline sal_Bool SAL_CALL getHomeDir( rtl::OUString& strDirectory) const;
-
- /** get the directory for configuration data of the logged in user.
- @param[out] strDirectory is the OUString which returns the directory name
- @return True, if any user is successfully logged in, otherwise False
- */
- inline sal_Bool SAL_CALL getConfigDir( rtl::OUString & strDirectory) const;
-
- /** Query if the user who is logged inhas administrator rigths.
- @return True, if the user has administrator rights, otherwise false.
- */
- inline sal_Bool SAL_CALL isAdministrator() const;
-
- /** Returns the underlying oslSecurity handle
- */
- inline oslSecurity getHandle() const;
-
-};
-
-}
-
-#endif // _OSL_SECURITY_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/signal.h b/sal/inc/osl/signal.h
deleted file mode 100644
index ca113308cf92..000000000000
--- a/sal/inc/osl/signal.h
+++ /dev/null
@@ -1,112 +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 _OSL_SIGNAL_H_
-#define _OSL_SIGNAL_H_
-
-#include "sal/config.h"
-
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define OSL_SIGNAL_USER_RESERVED 0
-
-#define OSL_SIGNAL_USER_RESOURCEFAILURE (OSL_SIGNAL_USER_RESERVED - 1)
-#define OSL_SIGNAL_USER_X11SUBSYSTEMERROR (OSL_SIGNAL_USER_RESERVED - 2)
-#define OSL_SIGNAL_USER_RVPCONNECTIONERROR (OSL_SIGNAL_USER_RESERVED - 3)
-
-typedef void* oslSignalHandler;
-
-typedef enum
-{
- osl_Signal_System,
- osl_Signal_Terminate,
- osl_Signal_AccessViolation,
- osl_Signal_IntegerDivideByZero,
- osl_Signal_FloatDivideByZero,
- osl_Signal_DebugBreak,
- osl_Signal_User,
- osl_Signal_Alarm,
- osl_Signal_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslSignal;
-
-typedef enum
-{
- osl_Signal_ActCallNextHdl,
- osl_Signal_ActIgnore,
- osl_Signal_ActAbortApp,
- osl_Signal_ActKillApp,
- osl_Signal_Act_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslSignalAction;
-
-#ifdef SAL_W32
-# pragma pack(push, 8)
-#endif
-
-typedef struct
-{
- oslSignal Signal;
- sal_Int32 UserSignal;
- void* UserData;
-} oslSignalInfo;
-
-#if defined( SAL_W32)
-# pragma pack(pop)
-#endif
-
-/** the function-ptr. representing the signal handler-function.
-*/
-typedef oslSignalAction (SAL_CALL *oslSignalHandlerFunction)(void* pData, oslSignalInfo* pInfo);
-
-SAL_DLLPUBLIC oslSignalHandler SAL_CALL osl_addSignalHandler(
- oslSignalHandlerFunction Handler, void* pData);
-
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_removeSignalHandler(
- oslSignalHandler hHandler);
-
-SAL_DLLPUBLIC oslSignalAction SAL_CALL osl_raiseSignal(
- sal_Int32 UserSignal, void* UserData);
-
-/** Enables or disables error reporting
-
- On default error reporting is enabled after process startup.
-
- @param bEnable [in]
- Enables or disables error reporting.
-
- @return
- sal_True if previous state of error reporting was enabled<br>
- sal_False if previous state of error reporting was disbaled<br>
-*/
-
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_setErrorReporting(
- sal_Bool bEnable );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OSL_SIGNAL_H_ */
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/socket.h b/sal/inc/osl/socket.h
deleted file mode 100644
index 8ccb2c740f53..000000000000
--- a/sal/inc/osl/socket.h
+++ /dev/null
@@ -1,920 +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 _OSL_SOCKET_H_
-#define _OSL_SOCKET_H_
-
-#include <rtl/ustring.h>
-#include <rtl/byteseq.h>
-
-#include <osl/time.h>
-#include <rtl/tencinfo.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* error returns */
-#define OSL_INADDR_NONE 0xffffffff
-#define OSL_INVALID_PORT (-1)
-#define OSL_INVALID_IPX_SOCKET_NO 0xffffffff
-
-/**
- Opaque datatype SocketAddr.
-*/
-typedef struct oslSocketAddrImpl * oslSocketAddr;
-
-
-/**
- Represents the address-family of a socket
-*/
-typedef enum {
- osl_Socket_FamilyInet, /* IP */
- osl_Socket_FamilyIpx, /* Novell IPX/SPX */
- osl_Socket_FamilyInvalid, /* always last entry in enum! */
- osl_Socket_Family_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslAddrFamily;
-
-/**
- represent a specific protocol within a address-family
-*/
-typedef enum {
- osl_Socket_ProtocolIp, /* for all af_inet */
- osl_Socket_ProtocolIpx, /* af_ipx datagram sockets (IPX) */
- osl_Socket_ProtocolSpx, /* af_ipx seqpacket or stream for SPX */
- osl_Socket_ProtocolSpxII, /* af_ipx seqpacket or stream for SPX II */
- osl_Socket_ProtocolInvalid,
- osl_Socket_Protocol_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslProtocol;
-
-
-/**
- Represents the type of a socket
-*/
-typedef enum {
- osl_Socket_TypeStream,
- osl_Socket_TypeDgram,
- osl_Socket_TypeRaw,
- osl_Socket_TypeRdm,
- osl_Socket_TypeSeqPacket,
- osl_Socket_TypeInvalid, /* always last entry in enum! */
- osl_Socket_Type_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslSocketType;
-
-
-/**
- Represents socket-options
-*/
-typedef enum {
- osl_Socket_OptionDebug,
- osl_Socket_OptionAcceptConn,
- osl_Socket_OptionReuseAddr,
- osl_Socket_OptionKeepAlive,
- osl_Socket_OptionDontRoute,
- osl_Socket_OptionBroadcast,
- osl_Socket_OptionUseLoopback,
- osl_Socket_OptionLinger,
- osl_Socket_OptionOOBinLine,
- osl_Socket_OptionSndBuf,
- osl_Socket_OptionRcvBuf,
- osl_Socket_OptionSndLowat,
- osl_Socket_OptionRcvLowat,
- osl_Socket_OptionSndTimeo,
- osl_Socket_OptionRcvTimeo,
- osl_Socket_OptionError,
- osl_Socket_OptionType,
- osl_Socket_OptionTcpNoDelay,
- osl_Socket_OptionInvalid, /* always last entry in enum! */
- osl_Socket_Option_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslSocketOption;
-
-/**
- Represents the different socket-option levels
-*/
-typedef enum {
- osl_Socket_LevelSocket,
- osl_Socket_LevelTcp,
- osl_Socket_LevelInvalid, /* always last entry in enum! */
- osl_Socket_Level_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslSocketOptionLevel;
-
-
-/**
- Represents flags to be used with send/recv-calls.
-*/
-typedef enum {
- osl_Socket_MsgNormal,
- osl_Socket_MsgOOB,
- osl_Socket_MsgPeek,
- osl_Socket_MsgDontRoute,
- osl_Socket_MsgMaxIOVLen,
- osl_Socket_MsgInvalid, /* always last entry in enum! */
- osl_Socket_Msg_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslSocketMsgFlag;
-
-/**
- Used by shutdown to denote which end of the socket to "close".
-*/
-typedef enum {
- osl_Socket_DirRead,
- osl_Socket_DirWrite,
- osl_Socket_DirReadWrite,
- osl_Socket_DirInvalid, /* always last entry in enum! */
- osl_Socket_Dir_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslSocketDirection;
-
-/** Describes the various error socket error conditions, which may
- occur */
-typedef enum {
- osl_Socket_E_None, /* no error */
- osl_Socket_E_NotSocket, /* Socket operation on non-socket */
- osl_Socket_E_DestAddrReq, /* Destination address required */
- osl_Socket_E_MsgSize, /* Message too long */
- osl_Socket_E_Prototype, /* Protocol wrong type for socket */
- osl_Socket_E_NoProtocol, /* Protocol not available */
- osl_Socket_E_ProtocolNoSupport, /* Protocol not supported */
- osl_Socket_E_TypeNoSupport, /* Socket type not supported */
- osl_Socket_E_OpNotSupport, /* Operation not supported on socket */
- osl_Socket_E_PfNoSupport, /* Protocol family not supported */
- osl_Socket_E_AfNoSupport, /* Address family not supported by */
- /* protocol family */
- osl_Socket_E_AddrInUse, /* Address already in use */
- osl_Socket_E_AddrNotAvail, /* Can't assign requested address */
- osl_Socket_E_NetDown, /* Network is down */
- osl_Socket_E_NetUnreachable, /* Network is unreachable */
- osl_Socket_E_NetReset, /* Network dropped connection because */
- /* of reset */
- osl_Socket_E_ConnAborted, /* Software caused connection abort */
- osl_Socket_E_ConnReset, /* Connection reset by peer */
- osl_Socket_E_NoBufferSpace, /* No buffer space available */
- osl_Socket_E_IsConnected, /* Socket is already connected */
- osl_Socket_E_NotConnected, /* Socket is not connected */
- osl_Socket_E_Shutdown, /* Can't send after socket shutdown */
- osl_Socket_E_TooManyRefs, /* Too many references: can't splice */
- osl_Socket_E_TimedOut, /* Connection timed out */
- osl_Socket_E_ConnRefused, /* Connection refused */
- osl_Socket_E_HostDown, /* Host is down */
- osl_Socket_E_HostUnreachable, /* No route to host */
- osl_Socket_E_WouldBlock, /* call would block on non-blocking socket */
- osl_Socket_E_Already, /* operation already in progress */
- osl_Socket_E_InProgress, /* operation now in progress */
- osl_Socket_E_InvalidError, /* unmapped error: always last entry in enum! */
- osl_Socket_E_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslSocketError;
-
-/** Common return codes of socket related functions.
- */
-typedef enum {
- osl_Socket_Ok, /* successful completion */
- osl_Socket_Error, /* error occurred, check osl_getLastSocketError() for details */
- osl_Socket_TimedOut, /* blocking operation timed out */
- osl_Socket_Interrupted, /* blocking operation was interrupted */
- osl_Socket_InProgress, /* nonblocking operation is in progress */
- osl_Socket_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslSocketResult;
-
-typedef sal_uInt8 oslSocketIpxNetNumber[4];
-typedef sal_uInt8 oslSocketIpxNodeNumber[6];
-
-/**@} end section types
-*/
-
-/**@{ begin section oslSocketAddr
-*/
-
-/** Creates a socket-address for the given family.
- @param Family If family == osl_Socket_FamilyInet the address is
- set to INADDR_ANY port 0.
- @return 0 if address could not be created.
-*/
-SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_createEmptySocketAddr(
- oslAddrFamily Family);
-
-
-/** Creates a new SocketAddress and fills it from Addr.
-*/
-SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_copySocketAddr(
- oslSocketAddr Addr);
-
-/** Compares the values of two SocketAddresses.
- @return <code>sal_True</code> if both addresses denote the same socket address,
- <code>sal_False</code> otherwise.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_isEqualSocketAddr(
- oslSocketAddr Addr1, oslSocketAddr Addr2);
-
-/** Uses the systems name-service interface to find an address for strHostname.
- @param[in] strHostname The name for which you search for an address.
- @return The desired address if one could be found, otherwise 0.
- Don't forget to destroy the address if you don't need it any longer.
-*/
-SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_resolveHostname(
- rtl_uString *strHostname);
-
-/** Create an internet address usable for sending broadcast datagrams.
- To limit the broadcast to your subnet, pass your hosts IP address
- in dotted decimal notation as first argument.
- @see osl_sendToSocket()
- @see oslSocketAddr
- @param[in] strDottedAddr dotted decimal internet address, may be 0.
- @param[in] Port port number in host byte order.
- @return 0 if address could not be created.
-*/
-SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_createInetBroadcastAddr (
- rtl_uString *strDottedAddr, sal_Int32 Port);
-
-
-/** Create an internet-address, consisting of hostaddress and port.
- We interpret strDottedAddr as a dotted-decimal inet-addr
- (e.g. "141.99.128.50").
- @param strDottedAddr [in] String with dotted address.
- @param Port [in] portnumber in host byte order.
- @return 0 if address could not be created.
-*/
-SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_createInetSocketAddr (
- rtl_uString *strDottedAddr, sal_Int32 Port);
-
-
-/** Frees all resources allocated by Addr. The handle Addr must not
- be used after the call anymore.
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_destroySocketAddr(
- oslSocketAddr Addr);
-
-/** Looks up the port-number designated to the specified service/protocol-pair.
- (e.g. "ftp" "tcp").
- @return OSL_INVALID_PORT if no appropriate entry was found, otherwise the port-number.
-*/
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_getServicePort(
- rtl_uString *strServicename, rtl_uString *strProtocol);
-
-
-
-/** Retrieves the address-family from the Addr.
- @return the family of the socket-address.
- In case of an unknown family you get <code>osl_Socket_FamilyInvalid</code>.
-*/
-SAL_DLLPUBLIC oslAddrFamily SAL_CALL osl_getFamilyOfSocketAddr(
- oslSocketAddr Addr);
-
-
-/** Retrieves the internet port-number of Addr.
- @return the port-number of the address in host-byte order. If Addr
- is not an address of type <code>osl_Socket_FamilyInet</code>, it returns <code>OSL_INVALID_PORT</code>
-*/
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_getInetPortOfSocketAddr(
- oslSocketAddr Addr);
-
-
-/** Sets the Port of Addr.
- @param[in] Addr the SocketAddr to perfom the operation on.
- @param[in] Port is expected in host byte-order.
- @return <code>sal_False</code> if Addr is not an inet-addr.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_setInetPortOfSocketAddr(
- oslSocketAddr Addr, sal_Int32 Port);
-
-
-/** Returns the hostname represented by Addr.
- @param[in] Addr The socket address from which to extract the hostname.
- @param[out] strHostname The hostname represented by the address. If
- there is no hostname to be found, it returns 0.
-*/
-SAL_DLLPUBLIC oslSocketResult SAL_CALL osl_getHostnameOfSocketAddr(
- oslSocketAddr Addr, rtl_uString **strHostname);
-
-
-/** Gets the address in dotted decimal format.
- @param[in] Addr The socket address from which to extract the dotted decimal address.
- @param[out] strDottedInetAddr Contains the dotted decimal address
- (e.g. 141.99.20.34) represented by the address.
- If the address is invalid or not of type <code>osl_Socket_FamilyInet</code>,
- it returns 0.
- @return <code>osl_Socket_Ok</code> or <code>osl_Socket_Error</code>
-*/
-SAL_DLLPUBLIC oslSocketResult SAL_CALL osl_getDottedInetAddrOfSocketAddr(
- oslSocketAddr Addr, rtl_uString **strDottedInetAddr);
-
-/** Sets the addr field in the struct sockaddr with pByteSeq. pByteSeq must be in network byte order.
- */
-SAL_DLLPUBLIC oslSocketResult SAL_CALL osl_setAddrOfSocketAddr(
- oslSocketAddr Addr, sal_Sequence *pByteSeq );
-
-/** Returns the addr field in the struct sockaddr.
- @param[in] Addr The socket address from which to extract the ipaddress.
- @param[out] ppByteSeq After the call, *ppByteSeq contains the ipaddress
- in network byteorder. *ppByteSeq may be 0 in case of an invalid socket handle.
- @return <code>osl_Socket_Ok</code> or <code>osl_Socket_Error</code>
- */
-SAL_DLLPUBLIC oslSocketResult SAL_CALL osl_getAddrOfSocketAddr(
- oslSocketAddr Addr, sal_Sequence **ppByteSeq );
-
-/*
- Opaque datatype HostAddr.
-*/
-typedef struct oslHostAddrImpl * oslHostAddr;
-
-
-/** Create an oslHostAddr from given hostname and socket address.
- @param[in] strHostname The hostname to be stored.
- @param[in] Addr The socket address to be stored.
- @return The created address or 0 upon failure.
-*/
-SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_createHostAddr(
- rtl_uString *strHostname, const oslSocketAddr Addr);
-
-
-/** Create an oslHostAddr by resolving the given strHostname.
- Successful name resolution should result in the fully qualified
- domain name (FQDN) and it's address as hostname and socket address
- members of the resulting oslHostAddr.
- @param[in] strHostname The hostname to be resolved.
- @return The resulting address or 0 upon failure.
-*/
-SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_createHostAddrByName(rtl_uString *strHostname);
-
-
-/** Create an oslHostAddr by reverse resolution of the given Addr.
- Successful name resolution should result in the fully qualified
- domain name (FQDN) and it's address as hostname and socket address
- members of the resulting oslHostAddr.
- @param[in] Addr The socket address to be reverse resolved.
- @return The resulting address or 0 upon failure.
-*/
-SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_createHostAddrByAddr(const oslSocketAddr Addr);
-
-
-/** Create a copy of the given Addr.
- @return The copied address or 0 upon failure.
-*/
-SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_copyHostAddr(const oslHostAddr Addr);
-
-
-/** Frees all resources allocated by Addr. The handle Addr must not
- be used after the call anymore.
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_destroyHostAddr(oslHostAddr Addr);
-
-
-/** Get the hostname member of Addr.
- @return The hostname or 0 upon failure.
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_getHostnameOfHostAddr(const oslHostAddr Addr, rtl_uString **strHostname);
-
-
-/** Get the socket address member of Addr.
- @return The socket address or 0 upon failure.
-*/
-SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_getSocketAddrOfHostAddr(const oslHostAddr Addr);
-
-/** Retrieve this machines hostname.
- May not always be a fully qualified domain name (FQDN).
- @param strLocalHostname out-parameter. The string that receives the local host name.
- @return <code>sal_True</code> upon success, <code>sal_False</code> otherwise.
-*/
-SAL_DLLPUBLIC oslSocketResult SAL_CALL osl_getLocalHostname(rtl_uString **strLocalHostname);
-
-
-/**@} end section oslHostAddr
-*/
-
-/**@{ begin section oslSocket
-*/
-
-
-/*-***************************************************************************/
-/* oslSocket */
-/*-***************************************************************************/
-
-typedef struct oslSocketImpl * oslSocket;
-
-/** increases the refcount of the socket handle by one
- */
-SAL_DLLPUBLIC void SAL_CALL osl_acquireSocket( oslSocket Socket );
-
-/** decreases the refcount of the socket handle by one.
-
- If the refcount drops to zero, the underlying socket handle
- is destroyed and becomes invalid.
- */
-SAL_DLLPUBLIC void SAL_CALL osl_releaseSocket( oslSocket Socket );
-
-/** Create a socket of the specified Family and Type. The semantic of
- the Protocol parameter depends on the given family and type.
- @return 0 if socket could not be created, otherwise you get a handle
- to the allocated socket-datastructure.
-*/
-SAL_DLLPUBLIC oslSocket SAL_CALL osl_createSocket(
- oslAddrFamily Family,
- oslSocketType Type,
- oslProtocol Protocol);
-
-/** Retrieves the Address of the local end of the socket.
- Note that a socket must be bound or connected before
- a vaild address can be returned.
- @return 0 if socket-address could not be created, otherwise you get
- the created Socket-Address.
-*/
-SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_getLocalAddrOfSocket(oslSocket Socket);
-
-/** Retrieves the Address of the remote end of the socket.
- Note that a socket must be connected before
- a vaild address can be returned.
- @return 0 if socket-address could not be created, otherwise you get
- the created Socket-Address.
-*/
-SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_getPeerAddrOfSocket(oslSocket Socket);
-
-/** Binds the given address to the socket.
- @param[in] Socket
- @param[in] Addr
- @return <code>sal_False</code> if the bind failed, <code> sal_True</code> if successful.
- @see osl_getLastSocketError()
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_bindAddrToSocket(
- oslSocket Socket,
- oslSocketAddr Addr);
-
-/** Connects the socket to the given address.
-
- @param[in] Socket a bound socket.
- @param[in] Addr the peer address.
- @param pTimeout Timeout value or NULL for blocking.
-
- @return <code>osl_Socket_Ok</code> on successful connection,
- <code>osl_Socket_TimedOut</code> if operation timed out,
- <code>osl_Socket_Interrupted</code> if operation was interrupted
- <code>osl_Socket_Error</code> if the connection failed.
-*/
-SAL_DLLPUBLIC oslSocketResult SAL_CALL osl_connectSocketTo(
- oslSocket Socket,
- oslSocketAddr Addr,
- const TimeValue* pTimeout);
-
-
-/** Prepares the socket to act as an acceptor of incoming connections.
- You should call "listen" before you use "accept".
- @param[in] Socket The socket to listen on.
- @param[in] MaxPendingConnections denotes the length of the queue of
- pending connections for this socket. If MaxPendingConnections is
- -1, the systems default value will be used (Usually 5).
- @return <code>sal_False</code> if the listen failed.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_listenOnSocket(
- oslSocket Socket,
- sal_Int32 MaxPendingConnections);
-
-
-/** Waits for an ingoing connection on the socket.
- This call blocks if there is no incoming connection present.
- @param[in] Socket The socket to accept the connection on.
- @param[in] pAddr if pAddr is != 0, the peers address is returned.
- @return 0 if the accept-call failed, otherwise you get a socket
- representing the new connection.
-*/
-SAL_DLLPUBLIC oslSocket SAL_CALL osl_acceptConnectionOnSocket
- (oslSocket Socket,
- oslSocketAddr* pAddr);
-
-/** Tries to receive BytesToRead data from the connected socket,
- if no error occurs. Note that incomplete recvs due to
- packet boundaries may occur.
-
- @param[in] Socket A connected socket to be used to listen on.
- @param[out] pBuffer Points to a buffer that will be filled with the received
- data.
- @param[in] BytesToRead The number of bytes to read. pBuffer must have at least
- this size.
- @param[in] Flag Modifier for the call. Valid values are:
- <ul>
- <li><code>osl_Socket_MsgNormal</code>
- <li><code>osl_Socket_MsgOOB</code>
- <li><code>osl_Socket_MsgPeek</code>
- <li><code>osl_Socket_MsgDontRoute</code>
- <li><code>osl_Socket_MsgMaxIOVLen</code>
- </ul>
-
- @return the number of received bytes.
-*/
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_receiveSocket(
- oslSocket Socket,
- void* pBuffer,
- sal_uInt32 BytesToRead,
- oslSocketMsgFlag Flag);
-
-/** Tries to receives BufferSize data from the (usually unconnected)
- (datagram-)socket, if no error occurs.
-
- @param[in] Socket A bound socket to be used to listen for a datagram.
- @param[out] SenderAddr A pointer to a created oslSocketAddr handle
- or to a null handle. After the call, it will contain the constructed
- oslSocketAddr of the datagrams sender. If pSenderAddr itself is 0,
- it is ignored.
- @param[out] pBuffer Points to a buffer that will be filled with the received
- datagram.
- @param[in] BufferSize The size of pBuffer.
- @param[in] Flag Modifier for the call. Valid values are:
- <ul>
- <li><code>osl_Socket_MsgNormal</code>
- <li><code>osl_Socket_MsgOOB</code>
- <li><code>osl_Socket_MsgPeek</code>
- <li><code>osl_Socket_MsgDontRoute</code>
- <li><code>osl_Socket_MsgMaxIOVLen</code>
- </ul>
-
- @return the number of received bytes.
-*/
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_receiveFromSocket(
- oslSocket Socket,
- oslSocketAddr SenderAddr,
- void* pBuffer,
- sal_uInt32 BufferSize,
- oslSocketMsgFlag Flag);
-
-/** Tries to send BytesToSend data from the connected socket,
- if no error occurs.
-
- @param[in] Socket A connected socket.
- @param[in] pBuffer Points to a buffer that contains the send-data.
- @param[in] BytesToSend The number of bytes to send. pBuffer must have at least
- this size.
- @param[in] Flag Modifier for the call. Valid values are:
- <ul>
- <li><code>osl_Socket_MsgNormal</code>
- <li><code>osl_Socket_MsgOOB</code>
- <li><code>osl_Socket_MsgPeek</code>
- <li><code>osl_Socket_MsgDontRoute</code>
- <li><code>osl_Socket_MsgMaxIOVLen</code>
- </ul>
-
- @return the number of transfered bytes.
-*/
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_sendSocket(
- oslSocket Socket,
- const void* pBuffer,
- sal_uInt32 BytesToSend,
- oslSocketMsgFlag Flag);
-
-/** Tries to send one datagram with BytesToSend data to the given ReceiverAddr
- via the (implicitly unconnected) datagram-socket.
- Since there is only sent one packet, the function sends the data always complete
- even with incomplete packet boundaries.
-
- @param[in] Socket A bound or unbound socket. Socket will be bound
- after a successful call.
-
- @param[in] ReceiverAddr An initialized oslSocketAddress that contains
- the destination address for this send.
-
- @param[in] pBuffer Points to a buffer that contains the send-data.
- @param[in] BytesToSend The number of bytes to send. pBuffer must have at least
- this size.
- @param Flag [in] Modifier for the call. Valid values are:
- <ul>
- <li><code>osl_Socket_MsgNormal</code>
- <li><code>osl_Socket_MsgOOB</code>
- <li><code>osl_Socket_MsgPeek</code>
- <li><code>osl_Socket_MsgDontRoute</code>
- <li><code>osl_Socket_MsgMaxIOVLen</code>
- </ul>
-
- @return the number of transfered bytes.
-*/
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_sendToSocket(
- oslSocket Socket,
- oslSocketAddr ReceiverAddr,
- const void* pBuffer,
- sal_uInt32 BytesToSend,
- oslSocketMsgFlag Flag);
-
-/** Checks if read operations will block.
-
- You can specify a timeout-value in seconds/microseconds that denotes
- how long the operation will block if the Socket is not ready.
-
- @return <code>sal_True</code> if read operations (recv, recvFrom, accept) on the Socket
- will NOT block; <code>sal_False</code> if it would block or if an error occurred.
-
- @param Socket the Socket to perfom the operation on.
- @param pTimeout if NULL, the operation will block without a timeout.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_isReceiveReady(
- oslSocket Socket, const TimeValue* pTimeout);
-
-/** Checks if send operations will block.
- You can specify a timeout-value in seconds/microseconds that denotes
- how long the operation will block if the Socket is not ready.
- @return <code>sal_True</code> if send operations (send, sendTo) on the Socket
- will NOT block; <code>sal_False</code> if it would block or if an error occurred.
-
- @param Socket the Socket to perfom the operation on.
- @param pTimeout if NULL, the operation will block without a timeout. Otherwise
- the time define by timeout value.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_isSendReady(
- oslSocket Socket, const TimeValue* pTimeout);
-
-/** Checks if a request for out-of-band data will block.
- You can specify a timeout-value in seconds/microseconds that denotes
- how long the operation will block if the Socket has no pending OOB data.
- @return <code>sal_True</code> if OOB-request operations (recv with appropriate flags)
- on the Socket will NOT block; <code>sal_False</code> if it would block or if an error occurred.
-
- @param Socket the Socket to perfom the operation on.
- @param pTimeout if NULL, the operation will block without a timeout.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_isExceptionPending(
- oslSocket Socket, const TimeValue* pTimeout);
-
-/** Shuts down communication on a connected socket.
- @param[in] Socket the Socket to perfom the operation on.
- @param[in] Direction denotes which end of the socket
- should be closed:
- <ul>
- <li> <code>osl_Socket_DirRead</code> closes read operations.
- <li> <code>osl_Socket_DirReadWrite</code> closes write operations.
- <li> <code>osl_Socket_DirWrite</code> closes read and write operations.
- </ul>
- @return <code>sal_True</code> if the socket could be closed down.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_shutdownSocket(oslSocket Socket,
- oslSocketDirection Direction);
-
-/** Retrieves attributes associated with the socket.
- @param Socket is the socket to query.
-
- @param Level selects the level for which an option should be queried.
- Valid values are:
- <ul>
- <li> osl_sol_socket: Socket Level
- <li> osl_sol_tcp: Level of Transmission Control Protocol
- </ul>
-
- @param Option denotes the option to query.
- Valid values (depending on the Level) are:
- <ul>
- <li> <code>osl_Socket_Option_Debug</code><br>
- (sal_Bool) Socket debug flag 1 = enabled, 0 = disabled.
-
- <li> <code>osl_Socket_OptionAcceptConn</code><br>
- <li> <code>osl_Socket_OptionReuseAddr</code><br>
- (sal_Bool) Allows the socket to be bound to an address that is
- already in use.
- 1 = multiple bound allowed, 0 = no multiple bounds allowed
-
- <li><code>osl_Socket_OptionKeepAlive</code><br>
- (sal_Bool) Keepalive packets are sent by the underlying socket.
- 1 = enabled, 0 = disabled
-
- <li><code>osl_Socket_OptionDontRoute</code><br>
- (sal_Bool) Do not route: send directly to interface.
- 1 = do not route , 0 = routing possible
-
- <li><code>osl_Socket_OptionBroadcast</code><br>
- (sal_Bool) Transmission of broadcast messages are allowed on the socket.
- 1 = transmission allowed, 0 = transmission disallowed
-
- <li><code>osl_Socket_OptionUseLoopback</code><br>
-
- <li><code>osl_Socket_OptionLinger</code><br>
- (sal_Int32) Linger on close if unsent data is present.
- 0 = linger is off, > 0 = timeout in seconds.
-
- <li><code>osl_Socket_OptionOOBinLine</code><br>
-
-
- <li><code>osl_Socket_OptionSndBuf</code><br>
- (sal_Int32) Size of the send buffer in bytes. Data is sent after
- SndTimeo or when the buffer is full. This allows faster writing
- to the socket.
-
- <li><code>osl_Socket_OptionRcvBuf</code><br>
- (sal_Int32) Size of the receive buffer in bytes. Data is sent after
- SndTimeo or when the buffer is full. This allows faster writing
- to the socket and larger packet sizes.
-
- <li><code>osl_Socket_OptionSndLowat</code><br>
-
- <li><code>osl_Socket_OptionRcvLowat</code><br>
-
- <li><code>osl_Socket_OptionSndTimeo</code><br>
- (sal_Int32) Data is sent after this timeout. This allows gathering
- of data to send larger packages but increases latency times.
-
- <li><code>osl_Socket_OptionRcvTimeo</code><br>
-
- <li><code>osl_Socket_OptionError</code><br>
- <li><code>osl_Socket_OptionType</code><br>
-
- <li><code>osl_Socket_OptionTcpNoDelay</code><br>
- Disables the Nagle algorithm for send coalescing. (Do not
- collect data until a packet is full, instead send immediately.
- This increases network traffic but might improve latency-times.)
- 1 = disables the algorithm, 0 = keeps it enabled.
- </ul>
- If not above mentioned otherwise, the options are only valid for
- level <code>osl_Socket_LevelSocket</code>.
-
- @param pBuffer Pointer to a buffer large enough to take the desired
- attribute-value.
-
- @param BufferLen contains the length of the Buffer.
-
- @return -1 if an error occurred or else the size of the data copied into
- pBuffer.
- @see osl_setSocketOption()
-*/
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_getSocketOption( oslSocket Socket,
- oslSocketOptionLevel Level,
- oslSocketOption Option,
- void* pBuffer,
- sal_uInt32 BufferLen);
-
-/** Sets the sockets attributes.
-
- @param Socket is the socket to modify.
-
- @param Level selects the level for which an option should be changed.
- Valid values are:
- <ul>
- <li> osl_sol_socket: Socket Level
- <li> osl_sol_tcp: Level of Transmission Control Protocol
- </ul>
-
- @param Option denotes the option to modify. See osl_setSocketOption() for more
- details.
-
- @param pBuffer Pointer to a Buffer which contains the attribute-value.
-
- @param BufferLen contains the length of the Buffer.
-
- @return True if the option could be changed.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_setSocketOption( oslSocket Socket,
- oslSocketOptionLevel Level,
- oslSocketOption Option,
- void* pBuffer,
- sal_uInt32 BufferLen);
-
-/** Enables/disables non-blocking-mode of the socket.
- @param Socket Change mode for this socket.
- @param On <code>sal_True</code> enables non-blocking mode,
- <code>sal_False</code> disables non-blocking mode.
- @return <code>sal_True</code> if mode could be changed.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_enableNonBlockingMode(
- oslSocket Socket, sal_Bool On);
-
-
-/** Query state of non-blocking-mode of the socket.
- @param Socket Query mode for this socket.
- @return True if non-blocking-mode is enabled.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_isNonBlockingMode(
- oslSocket Socket);
-
-
-/** Queries the socket for its type.
- @param[in] Socket The socket to query.
- @return one of:
- <ul>
- <li> osl_Socket_TypeStream
- <li> osl_Socket_TypeDgram
- <li> osl_Socket_TypeRaw
- <li> osl_Socket_TypeRdm
- <li> osl_Socket_TypeSeqPacket
- <li> osl_invalid_SocketType, if an error occurred
- </ul>
-*/
-SAL_DLLPUBLIC oslSocketType SAL_CALL osl_getSocketType(
- oslSocket Socket);
-
-/** returns a string which describes the last socket error.
- @param[in] Socket The socket to query.
- @param[out] strError The string that receives the error message.
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_getLastSocketErrorDescription(
- oslSocket Socket, rtl_uString **strError);
-
-/** returns a constant decribing the last error for the socket system.
- @return <code>osl_Socket_E_NONE</code> if no error occurred,
- <code>osl_invalid_SocketError</code> if an unknown (unmapped)
- error occurred, otherwise an enum describing the error.
-*/
-SAL_DLLPUBLIC oslSocketError SAL_CALL osl_getLastSocketError(
- oslSocket Socket);
-
-/** Type for the representation of socket sets.
-*/
-typedef struct oslSocketSetImpl * oslSocketSet;
-
-/** Creates a set of sockets to be used with osl_demultiplexSocketEvents().
- @return A oslSocketSet or 0 if creation failed.
-*/
-SAL_DLLPUBLIC oslSocketSet SAL_CALL osl_createSocketSet(void);
-
-/** Destroys a oslSocketSet.
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_destroySocketSet(oslSocketSet Set);
-
-/** Clears the set from all previously added sockets.
- @param Set the set to be cleared.
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_clearSocketSet(oslSocketSet Set);
-
-
-/** Adds a socket to the set.
- @param Set the set were the socket is added.
- @param Socket the socket to be added.
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_addToSocketSet(oslSocketSet Set, oslSocket Socket);
-
-/** Removes a socket from the set.
- @param Set the set were the socket is removed from.
- @param Socket the socket to be removed.
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_removeFromSocketSet(oslSocketSet Set, oslSocket Socket);
-
-/** Checks if socket is in the set.
- @param Set the set to be checked.
- @param Socket check if this socket is in the set.
- @return <code>sal_True</code> if socket is in the set.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_isInSocketSet(oslSocketSet Set, oslSocket Socket);
-
-/** Checks multiple sockets for events.
- @param IncomingSet Checks the sockets in this set
- for incoming events (read, accept). If the set is 0,
- it is just skipped.
- @param OutgoingSet Checks the sockets in this set
- for outgoing events (write, connect). If the set is 0,
- it is just skipped.
- @param OutOfBandSet Checks the sockets in this set
- for out-of-band events. If the set is 0, it is just skipped.
- @param pTimeout Address of the number of milliseconds to wait for events. If
- *pTimeout is -1, the call will block until an event or an error
- occurs.
- @return -1 on errors, otherwise the number of sockets with
- pending events. In case of timeout, the number might be 0.
-*/
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_demultiplexSocketEvents(oslSocketSet IncomingSet,
- oslSocketSet OutgoingSet,
- oslSocketSet OutOfBandSet,
- const TimeValue* pTimeout);
-
-/** Closes the socket terminating any ongoing dataflow.
- @param[in] Socket The socket to close.
- */
-SAL_DLLPUBLIC void SAL_CALL osl_closeSocket(oslSocket Socket);
-
-
-/** Retrieves n bytes from the stream and copies them into pBuffer.
- The function avoids incomplete reads due to packet boundaries.
- @param[in] Socket The socket to read from.
- @param[out] pBuffer receives the read data.
- @param[out] nSize the number of bytes to read. pBuffer must be large enough
- to hold the n bytes!
- @return the number of read bytes. The number will only be smaller than
- n if an exceptional condition (e.g. connection closed) occurs.
-*/
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_readSocket( oslSocket Socket, void *pBuffer, sal_Int32 nSize );
-
-
-/** Writes n bytes from pBuffer to the stream. The method avoids
- incomplete writes due to packet boundaries.
- @param[out] Socket The socket to write to.
- @param[in] pBuffer contains the data to be written.
- @param[in] nSize the number of bytes to write.
- @return the number of written bytes. The number will only be smaller than
- nSize if an exceptional condition (e.g. connection closed) occurs.
-*/
-SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_writeSocket( oslSocket Socket, const void *pBuffer, sal_Int32 nSize );
-
-/**@} end section oslSocket
-*/
-
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OSL_SOCKET_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/socket.hxx b/sal/inc/osl/socket.hxx
deleted file mode 100644
index f8246c48a448..000000000000
--- a/sal/inc/osl/socket.hxx
+++ /dev/null
@@ -1,559 +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 _OSL_SOCKET_HXX_
-#define _OSL_SOCKET_HXX_
-
-#include <osl/socket_decl.hxx>
-
-namespace osl
-{
- //______________________________________________________________________________
- inline SocketAddr::SocketAddr()
- : m_handle( osl_createEmptySocketAddr( osl_Socket_FamilyInet ) )
- {}
-
- //______________________________________________________________________________
- inline SocketAddr::SocketAddr(const SocketAddr& Addr)
- : m_handle( osl_copySocketAddr( Addr.m_handle ) )
- {
- }
-
- //______________________________________________________________________________
- inline SocketAddr::SocketAddr(oslSocketAddr Addr)
- : m_handle( osl_copySocketAddr( Addr ) )
- {
- }
-
- //______________________________________________________________________________
- inline SocketAddr::SocketAddr(oslSocketAddr Addr, __osl_socket_NoCopy )
- : m_handle( Addr )
- {
- }
-
- //______________________________________________________________________________
- inline SocketAddr::SocketAddr( const ::rtl::OUString& strAddrOrHostName, sal_Int32 nPort)
- : m_handle( osl_createInetSocketAddr( strAddrOrHostName.pData, nPort ) )
- {
- if(! m_handle )
- {
- m_handle = osl_resolveHostname(strAddrOrHostName.pData);
-
- // host found?
- if(m_handle)
- {
- osl_setInetPortOfSocketAddr(m_handle, nPort);
- }
- else
- {
- osl_destroySocketAddr( m_handle );
- m_handle = 0;
- }
- }
- }
-
- //______________________________________________________________________________
- inline SocketAddr::~SocketAddr()
- {
- if( m_handle )
- osl_destroySocketAddr( m_handle );
- }
-
- //______________________________________________________________________________
- inline ::rtl::OUString SocketAddr::getHostname( oslSocketResult *pResult ) const
- {
- ::rtl::OUString hostname;
- oslSocketResult result = osl_getHostnameOfSocketAddr( m_handle, &(hostname.pData) );
- if( pResult )
- *pResult = result;
- return hostname;
- }
-
- //______________________________________________________________________________
- inline sal_Int32 SAL_CALL SocketAddr::getPort() const
- {
- return osl_getInetPortOfSocketAddr(m_handle);
- }
-
- //______________________________________________________________________________
- inline sal_Bool SAL_CALL SocketAddr::setPort( sal_Int32 nPort )
- {
- return osl_setInetPortOfSocketAddr(m_handle, nPort );
- }
-
- inline sal_Bool SAL_CALL SocketAddr::setHostname( const ::rtl::OUString &sDottedIpOrHostname )
- {
- *this = SocketAddr( sDottedIpOrHostname , getPort() );
- return is();
- }
-
- //______________________________________________________________________________
- inline sal_Bool SAL_CALL SocketAddr::setAddr( const ::rtl::ByteSequence & address )
- {
- return osl_setAddrOfSocketAddr( m_handle, address.getHandle() )
- == osl_Socket_Ok;
- }
-
- inline ::rtl::ByteSequence SAL_CALL SocketAddr::getAddr( oslSocketResult *pResult ) const
- {
- ::rtl::ByteSequence sequence;
- oslSocketResult result = osl_getAddrOfSocketAddr( m_handle,(sal_Sequence **) &sequence );
- if( pResult )
- *pResult = result;
- return sequence;
- }
-
- //______________________________________________________________________________
- inline SocketAddr & SAL_CALL SocketAddr::operator= (oslSocketAddr Addr)
- {
- oslSocketAddr pNewAddr = osl_copySocketAddr( Addr );
- if( m_handle )
- osl_destroySocketAddr( m_handle );
- m_handle = pNewAddr;
- return *this;
- }
-
- //______________________________________________________________________________
- inline SocketAddr & SAL_CALL SocketAddr::operator= (const SocketAddr& Addr)
- {
- *this = (Addr.getHandle());
- return *this;
- }
-
- inline SocketAddr & SAL_CALL SocketAddr::assign( oslSocketAddr Addr, __osl_socket_NoCopy )
- {
- if( m_handle )
- osl_destroySocketAddr( m_handle );
- m_handle = Addr;
- return *this;
- }
-
- //______________________________________________________________________________
- inline sal_Bool SAL_CALL SocketAddr::operator== (oslSocketAddr Addr) const
- {
- return osl_isEqualSocketAddr( m_handle, Addr );
- }
-
- inline oslSocketAddr SocketAddr::getHandle() const
- {
- return m_handle;
- }
-
- //______________________________________________________________________________
- inline sal_Bool SocketAddr::is() const
- {
- return m_handle != 0;
- }
-
- // (static method)______________________________________________________________
- inline ::rtl::OUString SAL_CALL SocketAddr::getLocalHostname( oslSocketResult *pResult )
- {
- ::rtl::OUString hostname;
- oslSocketResult result = osl_getLocalHostname( &(hostname.pData) );
- if(pResult )
- *pResult = result;
- return hostname;
- }
-
- // (static method)______________________________________________________________
- inline void SAL_CALL SocketAddr::resolveHostname(
- const ::rtl::OUString & strHostName, SocketAddr &Addr)
- {
- Addr = SocketAddr( osl_resolveHostname( strHostName.pData ) , SAL_NO_COPY );
- }
-
- // (static method)______________________________________________________________
- inline sal_Int32 SAL_CALL SocketAddr::getServicePort(
- const ::rtl::OUString& strServiceName,
- const ::rtl::OUString & strProtocolName )
- {
- return osl_getServicePort( strServiceName.pData, strProtocolName.pData );
- }
-
- //______________________________________________________________________________
- inline Socket::Socket(oslSocketType Type,
- oslAddrFamily Family,
- oslProtocol Protocol)
- : m_handle( osl_createSocket(Family, Type, Protocol) )
- {}
-
- //______________________________________________________________________________
- inline Socket::Socket( oslSocket socketHandle, __sal_NoAcquire )
- : m_handle( socketHandle )
- {}
-
- //______________________________________________________________________________
- inline Socket::Socket( oslSocket socketHandle )
- : m_handle( socketHandle )
- {
- osl_acquireSocket( m_handle );
- }
-
- //______________________________________________________________________________
- inline Socket::Socket( const Socket & socket )
- : m_handle( socket.getHandle() )
- {
- osl_acquireSocket( m_handle );
- }
-
- //______________________________________________________________________________
- inline Socket::~Socket()
- {
- osl_releaseSocket( m_handle );
- }
-
- //______________________________________________________________________________
- inline Socket& Socket::operator= ( oslSocket socketHandle)
- {
- osl_acquireSocket( socketHandle );
- osl_releaseSocket( m_handle );
- m_handle = socketHandle;
- return *this;
- }
-
- //______________________________________________________________________________
- inline Socket& Socket::operator= (const Socket& sock)
- {
- return (*this) = sock.getHandle();
- }
-
- //______________________________________________________________________________
- inline sal_Bool Socket::operator==( const Socket& rSocket ) const
- {
- return m_handle == rSocket.getHandle();
- }
-
- //______________________________________________________________________________
- inline sal_Bool Socket::operator==( const oslSocket socketHandle ) const
- {
- return m_handle == socketHandle;
- }
-
- //______________________________________________________________________________
- inline void Socket::shutdown( oslSocketDirection Direction )
- {
- osl_shutdownSocket( m_handle , Direction );
- }
-
- //______________________________________________________________________________
- inline void Socket::close()
- {
- osl_closeSocket( m_handle );
- }
-
- //______________________________________________________________________________
- inline void Socket::getLocalAddr( SocketAddr & addr) const
- {
- addr.assign( osl_getLocalAddrOfSocket( m_handle ) , SAL_NO_COPY );
- }
-
- //______________________________________________________________________________
- inline sal_Int32 Socket::getLocalPort() const
- {
- SocketAddr addr( 0 );
- getLocalAddr( addr );
- return addr.getPort();
- }
-
- //______________________________________________________________________________
- inline ::rtl::OUString Socket::getLocalHost() const
- {
- SocketAddr addr( 0 );
- getLocalAddr( addr );
- return addr.getHostname();
- }
-
- //______________________________________________________________________________
- inline void Socket::getPeerAddr( SocketAddr &addr ) const
- {
- addr.assign( osl_getPeerAddrOfSocket( m_handle ), SAL_NO_COPY );
- }
-
- //______________________________________________________________________________
- inline sal_Int32 Socket::getPeerPort() const
- {
- SocketAddr addr( 0 );
- getPeerAddr( addr );
- return addr.getPort();
- }
-
- //______________________________________________________________________________
- inline ::rtl::OUString Socket::getPeerHost() const
- {
- SocketAddr addr( 0 );
- getPeerAddr( addr );
- return addr.getHostname();
- }
-
- //______________________________________________________________________________
- inline sal_Bool Socket::bind(const SocketAddr& LocalInterface)
- {
- return osl_bindAddrToSocket( m_handle , LocalInterface.getHandle() );
- }
-
- //______________________________________________________________________________
- inline sal_Bool Socket::isRecvReady(const TimeValue *pTimeout ) const
- {
- return osl_isReceiveReady( m_handle , pTimeout );
- }
-
- //______________________________________________________________________________
- inline sal_Bool Socket::isSendReady(const TimeValue *pTimeout ) const
- {
- return osl_isSendReady( m_handle, pTimeout );
- }
-
- //______________________________________________________________________________
- inline sal_Bool Socket::isExceptionPending(const TimeValue *pTimeout ) const
- {
- return osl_isExceptionPending( m_handle, pTimeout );
- }
-
- //______________________________________________________________________________
- inline oslSocketType Socket::getType() const
- {
- return osl_getSocketType( m_handle );
- }
-
- //______________________________________________________________________________
- inline sal_Int32 Socket::getOption(
- oslSocketOption Option,
- void* pBuffer,
- sal_uInt32 BufferLen,
- oslSocketOptionLevel Level) const
- {
- return osl_getSocketOption( m_handle, Level, Option, pBuffer , BufferLen );
- }
-
- //______________________________________________________________________________
- inline sal_Bool Socket::setOption( oslSocketOption Option,
- void* pBuffer,
- sal_uInt32 BufferLen,
- oslSocketOptionLevel Level ) const
- {
- return osl_setSocketOption( m_handle, Level, Option , pBuffer, BufferLen );
- }
-
- //______________________________________________________________________________
- inline sal_Bool Socket::setOption( oslSocketOption option, sal_Int32 nValue )
- {
- return setOption( option, &nValue, sizeof( nValue ) );
- }
-
- //______________________________________________________________________________
- inline sal_Int32 Socket::getOption( oslSocketOption option ) const
- {
- sal_Int32 n;
- getOption( option, &n, sizeof( n ) );
- return n;
- }
-
- //______________________________________________________________________________
- inline sal_Bool Socket::enableNonBlockingMode( sal_Bool bNonBlockingMode)
- {
- return osl_enableNonBlockingMode( m_handle , bNonBlockingMode );
- }
-
- //______________________________________________________________________________
- inline sal_Bool Socket::isNonBlockingMode() const
- {
- return osl_isNonBlockingMode( m_handle );
- }
-
- //______________________________________________________________________________
- inline void SAL_CALL Socket::clearError() const
- {
- sal_Int32 err = 0;
- getOption(osl_Socket_OptionError, &err, sizeof(err));
- }
-
- //______________________________________________________________________________
- inline oslSocketError Socket::getError() const
- {
- return osl_getLastSocketError( m_handle );
- }
-
- //______________________________________________________________________________
- inline ::rtl::OUString Socket::getErrorAsString( ) const
- {
- ::rtl::OUString error;
- osl_getLastSocketErrorDescription( m_handle, &(error.pData) );
- return error;
- }
-
- //______________________________________________________________________________
- inline oslSocket Socket::getHandle() const
- {
- return m_handle;
- }
-
- //______________________________________________________________________________
- inline StreamSocket::StreamSocket(oslAddrFamily Family,
- oslProtocol Protocol,
- oslSocketType Type )
- : Socket( Type, Family, Protocol )
- {}
-
- //______________________________________________________________________________
- inline StreamSocket::StreamSocket( oslSocket socketHandle, __sal_NoAcquire noacquire )
- : Socket( socketHandle, noacquire )
- {}
-
- //______________________________________________________________________________
- inline StreamSocket::StreamSocket( oslSocket socketHandle )
- : Socket( socketHandle )
- {}
-
- //______________________________________________________________________________
- inline StreamSocket::StreamSocket( const StreamSocket & socket )
- : Socket( socket )
- {}
-
- //______________________________________________________________________________
- inline sal_Int32 StreamSocket::read(void* pBuffer, sal_uInt32 n)
- {
- return osl_readSocket( m_handle, pBuffer, n );
- }
-
- //______________________________________________________________________________
- inline sal_Int32 StreamSocket::write(const void* pBuffer, sal_uInt32 n)
- {
- return osl_writeSocket( m_handle, pBuffer, n );
- }
-
-
- //______________________________________________________________________________
- inline sal_Int32 StreamSocket::recv(void* pBuffer,
- sal_uInt32 BytesToRead,
- oslSocketMsgFlag Flag)
- {
- return osl_receiveSocket( m_handle, pBuffer,BytesToRead, Flag );
- }
-
- //______________________________________________________________________________
- inline sal_Int32 StreamSocket::send(const void* pBuffer,
- sal_uInt32 BytesToSend,
- oslSocketMsgFlag Flag)
- {
- return osl_sendSocket( m_handle, pBuffer, BytesToSend, Flag );
- }
-
- //______________________________________________________________________________
- inline ConnectorSocket::ConnectorSocket(oslAddrFamily Family,
- oslProtocol Protocol,
- oslSocketType Type)
- : StreamSocket( Family, Protocol ,Type )
- {}
-
- //______________________________________________________________________________
- inline oslSocketResult ConnectorSocket::connect( const SocketAddr& TargetHost,
- const TimeValue* pTimeout )
- {
- return osl_connectSocketTo( m_handle , TargetHost.getHandle(), pTimeout );
- }
-
- //______________________________________________________________________________
- inline AcceptorSocket::AcceptorSocket(oslAddrFamily Family ,
- oslProtocol Protocol ,
- oslSocketType Type )
- : Socket( Type, Family, Protocol )
- {}
-
- //______________________________________________________________________________
- inline sal_Bool AcceptorSocket::listen(sal_Int32 MaxPendingConnections)
- {
- return osl_listenOnSocket( m_handle, MaxPendingConnections );
- }
-
- //______________________________________________________________________________
- inline oslSocketResult AcceptorSocket::acceptConnection( StreamSocket& Connection)
- {
- oslSocket o = osl_acceptConnectionOnSocket( m_handle, 0 );
- oslSocketResult status = osl_Socket_Ok;
- if( o )
- {
- Connection = StreamSocket( o , SAL_NO_ACQUIRE );
- }
- else
- {
- Connection = StreamSocket();
- status = osl_Socket_Error;
- }
- return status;
- }
-
- //______________________________________________________________________________
- inline oslSocketResult AcceptorSocket::acceptConnection(
- StreamSocket& Connection, SocketAddr & PeerAddr)
- {
- // TODO change in/OUT parameter
- oslSocket o = osl_acceptConnectionOnSocket( m_handle, (oslSocketAddr *)&PeerAddr );
- oslSocketResult status = osl_Socket_Ok;
- if( o )
- {
- Connection = StreamSocket( o , SAL_NO_ACQUIRE );
- }
- else
- {
- Connection = StreamSocket();
- status = osl_Socket_Error;
- }
- return status;
- }
-
- //______________________________________________________________________________
- inline DatagramSocket::DatagramSocket(oslAddrFamily Family,
- oslProtocol Protocol,
- oslSocketType Type)
- : Socket( Type, Family, Protocol )
- {}
-
- //______________________________________________________________________________
- inline sal_Int32 DatagramSocket::recvFrom(void* pBuffer,
- sal_uInt32 BufferSize,
- SocketAddr* pSenderAddr,
- oslSocketMsgFlag Flag )
- {
- sal_Int32 nByteRead;
- if( pSenderAddr )
- {
- // TODO : correct the out-parameter pSenderAddr outparameter
- nByteRead = osl_receiveFromSocket( m_handle, pSenderAddr->getHandle() , pBuffer,
- BufferSize, Flag);
-// nByteRead = osl_receiveFromSocket( m_handle, *(oslSocketAddr**) &pSenderAddr , pBuffer,
-// BufferSize, Flag);
- }
- else
- {
- nByteRead = osl_receiveFromSocket( m_handle, 0 , pBuffer , BufferSize , Flag );
- }
- return nByteRead;
- }
-
- //______________________________________________________________________________
- inline sal_Int32 DatagramSocket::sendTo( const SocketAddr& ReceiverAddr,
- const void* pBuffer,
- sal_uInt32 BufferSize,
- oslSocketMsgFlag Flag )
- {
- return osl_sendToSocket( m_handle, ReceiverAddr.getHandle(), pBuffer, BufferSize, Flag );
- }
-}
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/socket_decl.hxx b/sal/inc/osl/socket_decl.hxx
deleted file mode 100644
index f51cca12e4c3..000000000000
--- a/sal/inc/osl/socket_decl.hxx
+++ /dev/null
@@ -1,721 +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 _OSL_SOCKET_DECL_HXX_
-#define _OSL_SOCKET_DECL_HXX_
-
-#include <osl/socket.h>
-#include <rtl/ustring.hxx>
-#include <rtl/byteseq.hxx>
-
-namespace osl
-{
- enum __osl_socket_NoCopy { SAL_NO_COPY };
-
- /** The class should be understood as a reference to a socket address handle ( struct sockaddr ).
-
- The handle is mutable.
- */
- class SocketAddr
- {
- protected:
- oslSocketAddr m_handle;
- public:
-
- /** Creates socket address of unknown type.
- */
- inline SocketAddr();
-
- /** Copy constructor.
- */
- inline SocketAddr(const SocketAddr& Addr);
-
- /** The SocketAddr takes over the responsibility of the handle ( which means,
- that the handle gets destructed by the destructor of this reference)
- @param nocopy use SAL_NO_COPY
- */
- inline SocketAddr(const oslSocketAddr , __osl_socket_NoCopy nocopy );
-
- /** Copyconstructs the oslSocketAddr handle.
- */
- inline SocketAddr(oslSocketAddr Addr);
-
- /** tcpip-specif constructor.
- @param strAddrOrHostName strAddrOrHostName hostname or dotted ip-number of the network
- interface, the socket shall be created on.
- @param nPort tcp-ip port number
- */
- inline SocketAddr( const ::rtl::OUString& strAddrOrHostName, sal_Int32 nPort );
-
- /** destroys underlying oslSocketAddress
- */
- inline ~SocketAddr();
-
- /** checks, if the SocketAddr was created successful.
- @return <code>sal_True</code> if there is a valid underlying handle,
- otherwise sal_False.
- */
- inline sal_Bool is() const;
-
- /** Converts the address to a (human readable) domain-name.
-
- @param pResult 0, if you are not interested in errors,
- otherwise *pResult contains an error code on failure
- or osl_Socket_Ok on success
- @return the hostname of this SocketAddr or an empty string on failure.
- @see osl_getHostnameOfSocketAddr()
- */
- inline ::rtl::OUString SAL_CALL getHostname( oslSocketResult *pResult = 0 ) const;
-
- /** Sets the ipaddress or hostname of the SocketAddress
- */
- inline sal_Bool SAL_CALL setHostname( const ::rtl::OUString &sDottedIpOrHostname );
-
- /** Returns the port number of the address.
- @return the port in host-byte order or or OSL_INVALID_PORT on errors.
- */
- inline sal_Int32 SAL_CALL getPort() const;
-
- /** Sets the port number of the address.
- @return true if successfule.
- */
- inline sal_Bool SAL_CALL setPort( sal_Int32 nPort );
-
- /** Sets the address of the underlying socket address struct in network byte order.
- @return true on success, false signales falure.
- */
- inline sal_Bool SAL_CALL setAddr( const ::rtl::ByteSequence & address );
-
- /** Returns the address of the underlying socket in network byte order
- */
- inline ::rtl::ByteSequence SAL_CALL getAddr( oslSocketResult *pResult = 0 ) const;
-
- /** assign the handle to this reference. The previous handle is released.
- */
- inline SocketAddr & SAL_CALL operator= (oslSocketAddr Addr);
-
- /**
- */
- inline SocketAddr & SAL_CALL operator= (const SocketAddr& Addr);
-
- /** Assigns the socket addr without copyconstructing it.
- @param Addr the socket address.
- @param nocopy use SAL_NO_COPY
- */
- inline SocketAddr & SAL_CALL assign( oslSocketAddr Addr, __osl_socket_NoCopy nocopy );
-
- /** Returns true if the underlying handle is identical to the Addr handle.
- */
- inline sal_Bool SAL_CALL operator== (oslSocketAddr Addr) const;
-
- /** Returns true if the underlying handle is identical to the Addr handle.
- */
- inline sal_Bool SAL_CALL operator== (const SocketAddr & Addr) const;
-
- /** Returns the underlying SocketAddr handle without copyconstructing it.
- */
- inline oslSocketAddr SAL_CALL getHandle() const;
-
- /** Get the hostname for the local interface.
- @param pResult after the call *pResult contains osl_Socket_Ok on success or
- an error on failure.
- @return the hostname
- */
- static inline ::rtl::OUString SAL_CALL getLocalHostname( oslSocketResult *pResult = 0);
-
- /** Tries to find an address for a host.
- @see osl_resolveHostname()
- @return A new created socket-address or 0 if the name could not be found.
- */
- static inline void SAL_CALL resolveHostname(
- const ::rtl::OUString & strHostName , SocketAddr & Addr );
-
- /**
- Tries to find the port associated with the given service/protocol-
- pair (e.g. "ftp"/"tcp").
- @return the port number in host-byte order or <code>OSL_INVALID_PORT</code>
- if no service/protocol pair could be found.
- */
- static inline sal_Int32 SAL_CALL getServicePort(
- const ::rtl::OUString& strServiceName,
- const ::rtl::OUString & strProtocolName= ::rtl::OUString("tcp") );
- };
-
-
- class Socket
- {
- protected:
- oslSocket m_handle;
- protected:
- /** Creates a socket. Note it's protected.
- @param Type
- @param Family
- @param Protocol
- */
- inline Socket(oslSocketType Type,
- oslAddrFamily Family = osl_Socket_FamilyInet,
- oslProtocol Protocol = osl_Socket_ProtocolIp);
- public:
- inline Socket( );
-
- inline Socket( const Socket & socket );
-
- inline Socket( oslSocket socketHandle );
-
- /** The instance takes over the handle's ownership without acquiring the
- handle, but releases it within the dtor.
- @param socketHandle the handle
- @param noacquire use SAL_NO_ACQUIRE
- */
- inline Socket( oslSocket socketHandle, __sal_NoAcquire noacquire );
-
- /** Destructor. Releases the underlying handle
- */
- inline ~Socket();
-
- /** Assignment operator. If socket was already created, the old one will
- be discarded.
- */
- inline Socket& SAL_CALL operator= ( oslSocket socketHandle);
-
- /** Assignment operator. If socket was already created, the old one will
- be discarded.
- */
- inline Socket& SAL_CALL operator= (const Socket& sock);
-
- /**
- @return <code>sal_True</code>, when the underlying handle of both
- Socket instances are identical, <code>sal_False</code> otherwise.
- */
- inline sal_Bool SAL_CALL operator==( const Socket& rSocket ) const ;
-
- /**
- @return <code>sal_True</code>, when the underlying handle of both
- Socket instances are identical, <code>sal_False</code> otherwise.
- */
- inline sal_Bool SAL_CALL operator==( const oslSocket socketHandle ) const;
-
- /** Closes a definite or both directions of the bidirectional stream.
-
- @param Direction
- @see osl_shutdownSocket()
- */
- inline void SAL_CALL shutdown( oslSocketDirection Direction = osl_Socket_DirReadWrite );
-
- /** Closes a socket.
- Note that closing a socket is identical to shutdown( osl_Socket_DirReadWrite ),
- as the operating system distinguish both cases, both functions or offered in this API.
- @see osl_closeSocket()
- */
- inline void SAL_CALL close();
-
- /** Retrieves the address of the local interface of this socket.
- @param Addr [out] receives the address.
- @see osl_getLocalAddrOfSocket()
- */
- inline void SAL_CALL getLocalAddr( SocketAddr &Addr ) const;
-
- /** Get the local port of the socket. Usually used after bind().
- @return the port number or OSL_INVALID_PORT on errors.
- */
- inline sal_Int32 SAL_CALL getLocalPort() const;
-
- /** Get the hostname for the local interface.
- @return the hostname or an empty string ("").
- */
- inline ::rtl::OUString SAL_CALL getLocalHost() const;
-
- /** Retrieves the address of the remote host of this socket.
- @param Addr [out] receives the address.
- */
- inline void SAL_CALL getPeerAddr( SocketAddr & Addr) const;
-
- /** Get the remote port of the socket.
- @return the port number or OSL_INVALID_PORT on errors.
- */
- inline sal_Int32 SAL_CALL getPeerPort() const;
-
- /** Get the hostname for the remote interface.
- @return the hostname or an empty string ("").
- */
- inline ::rtl::OUString SAL_CALL getPeerHost() const;
-
- /** Binds the socket to the specified (local) interface.
- @param LocalInterface Address of the Interface
- @return True if bind was successful.
- */
- inline sal_Bool SAL_CALL bind(const SocketAddr& LocalInterface);
-
- /** Checks if read operations will block.
-
- You can specify a timeout-value in seconds/nanoseconds that denotes
- how the operation will block if the Socket is not ready.
- @return <code>sal_True</code> if read operations (recv, recvFrom, accept) on the Socket
- will NOT block; <code>sal_False</code> if it would block or if an error occurred.
-
- @param pTimeout if 0, the operation will block without a timeout. Otherwise
- the specified amout of time.
- */
- inline sal_Bool SAL_CALL isRecvReady(const TimeValue *pTimeout = 0) const;
-
- /** Checks if send operations will block.
-
- You can specify a timeout-value in seconds/nanoseconds that denotes
- how the operation will block if the Socket is not ready.
- @return <code>sal_True</code> if send operations (send, sendTo) on the Socket
- will NOT block; <code>sal_False</code> if it would block or if an error occurred.
-
- @param pTimeout if 0, the operation will block without a timeout. Otherwise
- the specified amout of time.
- */
- inline sal_Bool SAL_CALL isSendReady(const TimeValue *pTimeout = 0) const;
-
-
- /** Checks if a request for out-of-band data will block.
-
- You can specify a timeout-value in seconds/nanoseconds that denotes
- how the operation will block if the Socket has no pending OOB data.
-
- @return <code>sal_True</code> if OOB-request operations (recv with appropriate flags)
- on the Socket will NOT block; <code>sal_False</code> if it would block or if
- an error occurred.
-
- @param pTimeout if 0, the operation will block without a timeout. Otherwise
- the specified amout of time.
- */
- inline sal_Bool SAL_CALL isExceptionPending(const TimeValue *pTimeout = 0) const;
-
-
- /** Queries the socket for its type.
- @return one of:
- <ul>
- <li> <code>osl_Socket_TypeStream</code>
- <li> <code>osl_Socket_TypeDgram</code>
- <li> <code>osl_Socket_TypeRaw</code>
- <li> <code>osl_Socket_TypeRdm</code>
- <li> <code>osl_Socket_TypeSeqPacket</code>
- <li> <code>osl_invalid_SocketType</code>, if an error occurred
- </ul>
- */
- inline oslSocketType SAL_CALL getType() const;
-
- /** Retrieves option-attributes associated with the socket.
- @param Option The attribute to query.
- Valid values (depending on the Level) are:
- <ul>
- <li> <code>osl_Socket_Option_Debug</code><br>
- (sal_Bool) Socket debug flag 1 = enabled, 0 = disabled.
-
- <li> <code>osl_Socket_OptionAcceptConn</code><br>
- <li> <code>osl_Socket_OptionReuseAddr</code><br>
- (sal_Bool) Allows the socket to be bound to an address that is
- already in use.
- 1 = multiple bound allowed, 0 = no multiple bounds allowed
-
- <li><code>osl_Socket_OptionKeepAlive</code><br>
- (sal_Bool) Keepalive packets are sent by the underlying socket.
- 1 = enabled, 0 = disabled
-
- <li><code>osl_Socket_OptionDontRoute</code><br>
- (sal_Bool) Do not route: send directly to interface.
- 1 = do not route , 0 = routing possible
-
- <li><code>osl_Socket_OptionBroadcast</code><br>
- (sal_Bool) Transmission of broadcast messages are allowed on the socket.
- 1 = transmission allowed, 0 = transmission disallowed
-
- <li><code>osl_Socket_OptionUseLoopback</code><br>
-
- <li><code>osl_Socket_OptionLinger</code><br>
- (linger) Linger on close if unsent data is present.
- linger has two members: l_onoff, l_linger
- l_onoff = 0 is off, l_onoff > 0 and l_linger= timeout in seconds.
-
- <li><code>osl_Socket_OptionOOBinLine</code><br>
-
-
- <li><code>osl_Socket_OptionSndBuf</code><br>
- (sal_Int32) Size of the send buffer in bytes. Data is sent after
- SndTimeo or when the buffer is full. This allows faster writing
- to the socket.
-
- <li><code>osl_Socket_OptionRcvBuf</code><br>
- (sal_Int32) Size of the receive buffer in bytes. Data is sent after
- SndTimeo or when the buffer is full. This allows faster writing
- to the socket and larger packet sizes.
-
- <li><code>osl_Socket_OptionSndLowat</code><br>
-
- <li><code>osl_Socket_OptionRcvLowat</code><br>
-
- <li><code>osl_Socket_OptionSndTimeo</code><br>
- (sal_Int32) Data is sent after this timeout. This allows gathering
- of data to send larger packages but increases latency times.
-
- <li><code>osl_Socket_OptionRcvTimeo</code><br>
-
- <li><code>osl_Socket_OptionError</code><br>
- <li><code>osl_Socket_OptionType</code><br>
-
- <li><code>osl_Socket_OptionTcpNoDelay</code><br>
- Disables the Nagle algorithm for send coalescing. (Do not
- collect data until a packet is full, instead send immediately.
- This increases network traffic but might improve latency-times.)
- 1 = disables the algorithm, 0 = keeps it enabled.
- </ul>
-
- If not above mentioned otherwise, the options are only valid for
- level <code>osl_Socket_LevelSocket</code>.
- @param pBuffer The Buffer will be filled with the attribute.
-
- @param BufferLen The size of pBuffer.
-
- @param Level The option level.
-
- Valid values are:
- <ul>
- <li><code>osl_Socket_LevelSocket</code> : Socket Level
- <li><code>osl_Socket_LevelTcp</code> : Level of Transmission Control Protocol
- </ul>
- @return The size of the attribute copied into pBuffer or -1 if an error
- occurred.
- */
- inline sal_Int32 SAL_CALL getOption(
- oslSocketOption Option,
- void* pBuffer,
- sal_uInt32 BufferLen,
- oslSocketOptionLevel Level= osl_Socket_LevelSocket) const;
-
- /** Sets the sockets attributes.
-
- @param Option denotes the option to modify.
- Valid values (depending on the Level) are:
- <ul>
- <li> osl_Socket_Option_Debug
- <li> osl_Socket_OptionAcceptConn
- <li> osl_Socket_OptionReuseAddr
- <li> osl_Socket_OptionKeepAlive
- <li> osl_Socket_OptionDontRoute
- <li> osl_Socket_OptionBroadcast
- <li> osl_Socket_OptionUseLoopback
- <li> osl_Socket_OptionLinger
- <li> osl_Socket_OptionOOBinLine
- <li> osl_Socket_OptionSndBuf
- <li> osl_Socket_OptionRcvBuf
- <li> osl_Socket_OptionSndLowat
- <li> osl_Socket_OptionRcvLowat
- <li> osl_Socket_OptionSndTimeo
- <li> osl_Socket_OptionRcvTimeo
- <li> osl_Socket_OptionError
- <li> osl_Socket_OptionType
- <li> osl_Socket_OptionTcpNoDelay
- </ul>
-
- If not above mentioned otherwise, the options are only valid for
- level osl_Socket_LevelSocket.
-
- @param pBuffer Pointer to a Buffer which contains the attribute-value.
-
- @param BufferLen contains the length of the Buffer.
-
- @param Level selects the level for which an option should be changed.
- Valid values are:
- <ul>
- <li> osl_Socket_evel_Socket : Socket Level
- <li> osl_Socket_Level_Tcp : Level of Transmission Control Protocol
- </ul>
-
- @return True if the option could be changed.
- */
- inline sal_Bool SAL_CALL setOption( oslSocketOption Option,
- void* pBuffer,
- sal_uInt32 BufferLen,
- oslSocketOptionLevel Level= osl_Socket_LevelSocket ) const;
-
- /** Convenience function for setting sal_Bool and sal_Int32 option values.
- @see setOption()
- */
- inline sal_Bool setOption( oslSocketOption option, sal_Int32 nValue );
-
- /** Convenience function for retrieving sal_Bool and sal_Int32 option values.
- @see setOption()
- */
- inline sal_Int32 getOption( oslSocketOption option ) const;
-
- /** Enables/disables non-blocking mode of the socket.
- @param bNonBlockingMode If <code>sal_True</code>, blocking mode will be switched off
- If <code>sal_False</code>, the socket will become a blocking
- socket (which is the default behaviour of a socket).
- @return <code>sal_True</code> if mode could be set.
- */
- inline sal_Bool SAL_CALL enableNonBlockingMode( sal_Bool bNonBlockingMode);
-
- /** Query blocking mode of the socket.
- @return <code>sal_True</code> if non-blocking mode is set.
- */
- inline sal_Bool SAL_CALL isNonBlockingMode() const;
-
-
- /** clears the error status
- */
- inline void SAL_CALL clearError() const;
-
- /** returns a constant decribing the last error for the socket system.
-
- @return osl_Socket_E_NONE if no error occurred, invalid_SocketError if
- an unknown (unmapped) error occurred, otherwise an enum describing the
- error.
- @see osl_getLastSocketError()
- */
- inline oslSocketError getError() const;
-
- /** Builds a string with the last error-message for the socket.
- */
- inline ::rtl::OUString getErrorAsString( ) const;
-
- /** Returns the underlying handle unacquired (The caller must acquire it to keep it).
- */
- inline oslSocket getHandle() const;
- };
-
-
- class StreamSocket : public Socket
- {
- public:
- /** Creates a socket.
- @param Family the Family of the socket (Inet by default)
- @param Protocol the Protocon of the socket (IP by default)
- @param Type For some protocols it might be desirable to
- use a different type than <code>osl_Socket_TypeStream</code>
- (like <code>osl_Socket_TypeSeqPacket</code>).
- Therefore this parameter is not hidden.
- */
- inline StreamSocket(oslAddrFamily Family = osl_Socket_FamilyInet,
- oslProtocol Protocol = osl_Socket_ProtocolIp,
- oslSocketType Type = osl_Socket_TypeStream);
-
- inline StreamSocket( const StreamSocket & );
-
- inline StreamSocket( oslSocket Socket , __sal_NoAcquire noacquire );
-
- inline StreamSocket( oslSocket Socket );
-
- /** Retrieves n bytes from the stream and copies them into pBuffer.
- The method avoids incomplete reads due to packet boundaries and is thus
- blocking.
- @param pBuffer receives the read data. pBuffer must be large enough
- to hold n bytes.
- @param n the number of bytes to read.
- @return the number of read bytes. The number will only be smaller than
- n if an exceptional condition (e.g. connection closed) occurs.
- */
- inline sal_Int32 SAL_CALL read(void* pBuffer, sal_uInt32 n);
-
- /** Writes n bytes from pBuffer to the stream. The method avoids
- incomplete writes due to packet boundaries and is thus blocking.
- @param pBuffer contains the data to be written.
- @param n the number of bytes to write.
- @return the number of written bytes. The number will only be smaller than
- n if an exceptional condition (e.g. connection closed) occurs.
- */
- inline sal_Int32 SAL_CALL write(const void* pBuffer, sal_uInt32 n);
-
-
- /** Tries to receive BytesToRead data from the connected socket,
-
- @param[out] pBuffer Points to a buffer that will be filled with the received
- data. pBuffer must have at least have a size of BytesToRead.
- @param[in] BytesToRead The number of bytes to read.
- @param[in] flags Modifier for the call. Valid values are:
-
- <ul>
- <li><code>osl_Socket_MsgNormal</code>
- <li><code>osl_Socket_MsgOOB</code>
- <li><code>osl_Socket_MsgPeek</code>
- <li><code>osl_Socket_MsgDontRoute</code>
- <li><code>osl_Socket_MsgMaxIOVLen</code>
- </ul>
- @return the number of received bytes, which may be less than BytesToRead.
- */
- inline sal_Int32 SAL_CALL recv(void* pBuffer,
- sal_uInt32 BytesToRead,
- oslSocketMsgFlag flags= osl_Socket_MsgNormal);
-
- /** Tries to send BytesToSend data to the connected socket.
-
- @param pBuffer [in] Points to a buffer that contains the send-data.
- @param BytesToSend [in] The number of bytes to send. pBuffer must have at least
- this size.
- @param Flag [in] Modifier for the call. Valid values are:
- <ul>
- <li><code>osl_Socket_MsgNormal</code>
- <li><code>osl_Socket_MsgOOB</code>
- <li><code>osl_Socket_MsgPeek</code>
- <li><code>osl_Socket_MsgDontRoute</code>
- <li><code>osl_Socket_MsgMaxIOVLen</code>
- </ul>
-
- @return the number of transfered bytes. It may be less than BytesToSend.
- */
- sal_Int32 SAL_CALL send(const void* pBuffer,
- sal_uInt32 BytesToSend,
- oslSocketMsgFlag= osl_Socket_MsgNormal);
- };
-
- class ConnectorSocket : public StreamSocket
- {
- public:
- /** Creates a socket that can connect to a (remote) host.
- @param Family the Family of the socket (Inet by default)
- @param Protocol the Protocon of the socket (IP by default)
- @param Type For some protocols it might be desirable to
- use a different type than sock_stream <code>osl_Socket_TypeSeqPacket</code>
- (like <code>osl_Socket_TypeSeqPacket</code>).
- Therefore we do not hide this parameter here.
- */
- ConnectorSocket(oslAddrFamily Family = osl_Socket_FamilyInet,
- oslProtocol Protocol = osl_Socket_ProtocolIp,
- oslSocketType Type = osl_Socket_TypeStream);
-
-
- /** Connects the socket to a (remote) host.
- @param TargetHost The address of the target.
- @param pTimeout The timeout for blocking. If 0, a default system dependent timeout
- us used.
- @return <code> osl_Socket_Ok</code> if connected successfully,
- <code>osl_Socket_TimedOut</code> on timeout,
- <code>osl_Socket_Interrupted</code> if unblocked forcefully (by osl::Socket::close()),
- <code>osl_Socket_Error</code> if connect failed.
- */
- oslSocketResult SAL_CALL connect(const SocketAddr& TargetHost, const TimeValue* pTimeout = 0);
- };
-
- /** Allows to accept socket connections.
- */
- class AcceptorSocket : public Socket
- {
- public:
- inline AcceptorSocket(oslAddrFamily Family = osl_Socket_FamilyInet,
- oslProtocol Protocol = osl_Socket_ProtocolIp,
- oslSocketType Type = osl_Socket_TypeStream);
-
- /** Prepare a socket for the accept-call. The socket must have been
- bound before to the local address.
- @param MaxPendingConnections The maximum number of pending
- connections (waiting to be accepted) on this socket. If you use
- -1, a system default value is used.
- @return <code>sal_True</code> if call was successful.
- */
- inline sal_Bool SAL_CALL listen(sal_Int32 MaxPendingConnections= -1);
-
- /** Accepts incoming connections on the socket. You must
- precede this call with osl::Socket::bind() and listen().
- @param Connection receives the incoming connection.
- @return <code>osl_Socket_Ok</code>, if a connection has been accepted,
- <code>osl_Socket_TimedOut</code>, if m_RecvTimeout milliseconds passed without connect,
- <code>osl_Socket_Error</code> on errors.
- */
- inline oslSocketResult SAL_CALL acceptConnection( StreamSocket& Connection);
-
- /** Accepts incoming connections on the socket. You must
- precede this call with osl::Socket::bind() and listen().
- @param PeerAddr receives the address of the connecting entity
- (your communication partner).
- @param Connection receives the incoming connection.
- @return <code>osl_Socket_Ok</code>, if a connection has been accepted,
- <code>osl_Socket_TimedOut</code>, if m_RecvTimeout milliseconds passed without connect,
- <code>osl_Socket_Error</code> on errors.
- */
- inline oslSocketResult SAL_CALL acceptConnection( StreamSocket& Connection, SocketAddr & PeerAddr);
- };
-
-
-
- /** A connectionless socket to send and receive datagrams.
- */
- class DatagramSocket : public Socket
- {
- public:
-
- /** Creates a datagram socket.
- @param Family the Family of the socket (Inet by default)
- @param Protocol the Protocon of the socket (IP by default)
- @param Type is sock_dgram by default.
- */
- inline DatagramSocket(oslAddrFamily Family= osl_Socket_FamilyInet,
- oslProtocol Protocol= osl_Socket_ProtocolIp,
- oslSocketType Type= osl_Socket_TypeDgram);
-
- /** Tries to receives BufferSize data from the socket, if no error occurs.
-
- @param pSenderAddr [out] You must provide pointer to a SocketAddr.
- It will be filled with the address of the datagrams sender.
- If pSenderAddr is 0, it is ignored.
- @param pBuffer [out] Points to a buffer that will be filled with the received
- datagram.
- @param BufferSize [in] The size of pBuffer.
- @param Flag [in] Modifier for the call. Valid values are:
- <ul>
- <li><code>osl_Socket_MsgNormal</code>
- <li><code>osl_Socket_MsgOOB</code>
- <li><code>osl_Socket_MsgPeek</code>
- <li><code>osl_Socket_MsgDontRoute</code>
- <li><code>osl_Socket_MsgMaxIOVLen</code>
- </ul>
-
- @return the number of received bytes.
- */
- inline sal_Int32 SAL_CALL recvFrom(void* pBuffer,
- sal_uInt32 BufferSize,
- SocketAddr* pSenderAddr= 0,
- oslSocketMsgFlag Flag= osl_Socket_MsgNormal);
-
- /** Tries to send one datagram with BytesToSend size to the given ReceiverAddr.
- Since there is only send one packet, the function doesn't care about
- packet boundaries.
-
- @param ReceiverAddr [in] A SocketAddr that contains
- the destination address for this send.
-
- @param pBuffer [in] Points to a buffer that contains the send-data.
- @param BufferSize [in] The number of bytes to send. pBuffer must have at least
- this size.
- @param Flag [in] Modifier for the call. Valid values are:
-
- <ul>
- <li><code>osl_Socket_MsgNormal</code>
- <li><code>osl_Socket_MsgOOB</code>
- <li><code>osl_Socket_MsgPeek</code>
- <li><code>osl_Socket_MsgDontRoute</code>
- <li><code>osl_Socket_MsgMaxIOVLen</code>
- </ul>
-
- @return the number of transfered bytes.
- */
- inline sal_Int32 SAL_CALL sendTo( const SocketAddr& ReceiverAddr,
- const void* pBuffer,
- sal_uInt32 BufferSize,
- oslSocketMsgFlag Flag= osl_Socket_MsgNormal);
- };
-
-}
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/thread.h b/sal/inc/osl/thread.h
deleted file mode 100644
index bc93a57b1735..000000000000
--- a/sal/inc/osl/thread.h
+++ /dev/null
@@ -1,196 +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 _OSL_THREAD_H_
-#define _OSL_THREAD_H_
-
-#include "sal/config.h"
-
-#include "osl/time.h"
-#include "rtl/textenc.h"
-#include "sal/saldllapi.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- Opaque data type for threads. As with all other osl-handles
- you can initialize and/or test it to/for 0.
-*/
-typedef void* oslThread;
-
-/** the function-ptr. representing the threads worker-function.
-*/
-typedef void (SAL_CALL *oslWorkerFunction)(void*);
-
-/** levels of thread-priority
- Note that oslThreadPriorityUnknown might be returned
- by getPriorityOfThread() (e.g. when it is terminated),
- but mustn't be used with setPriority()!
-*/
-typedef enum
-{
- osl_Thread_PriorityHighest,
- osl_Thread_PriorityAboveNormal,
- osl_Thread_PriorityNormal,
- osl_Thread_PriorityBelowNormal,
- osl_Thread_PriorityLowest,
- osl_Thread_PriorityUnknown, /* don't use to set */
- osl_Thread_Priority_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslThreadPriority;
-
-
-typedef sal_uInt32 oslThreadIdentifier;
-
-typedef void* oslThreadKey;
-
-/** Create the thread, using the function-ptr pWorker as
- its main (worker) function. This functions receives in
- its void* parameter the value supplied by pThreadData.
- Once the OS-structures are initialized,the thread starts
- running.
- @return 0 if creation failed, otherwise a handle to the thread
-*/
-SAL_DLLPUBLIC oslThread SAL_CALL osl_createThread(oslWorkerFunction pWorker, void* pThreadData);
-
-/** Create the thread, using the function-ptr pWorker as
- its main (worker) function. This functions receives in
- its void* parameter the value supplied by pThreadData.
- The thread will be created, but it won't start running.
- To wake-up the thread, use resume().
- @return 0 if creation failed, otherwise a handle to the thread
-*/
-SAL_DLLPUBLIC oslThread SAL_CALL osl_createSuspendedThread(oslWorkerFunction pWorker, void* pThreadData);
-
-/** Get the identifier for the specified thread or if parameter
- Thread is NULL of the current active thread.
- @return identifier of the thread
-*/
-SAL_DLLPUBLIC oslThreadIdentifier SAL_CALL osl_getThreadIdentifier(oslThread Thread);
-
-/** Release the thread handle.
- If Thread is NULL, the function won't do anything.
- Note that we do not interfere with the actual running of
- the thread, we just free up the memory needed by the handle.
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_destroyThread(oslThread Thread);
-
-/** Wake-up a thread that was suspended with suspend() or
- createSuspended(). The oslThread must be valid!
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_resumeThread(oslThread Thread);
-
-/** Suspend the execution of the thread. If you want the thread
- to continue, call resume(). The oslThread must be valid!
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_suspendThread(oslThread Thread);
-
-/** Changes the threads priority.
- The oslThread must be valid!
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_setThreadPriority(oslThread Thread, oslThreadPriority Priority);
-
-/** Retrieves the threads priority.
- Returns oslThreadPriorityUnknown for invalid Thread-argument or
- terminated thread. (I.e.: The oslThread might be invalid.)
-*/
-SAL_DLLPUBLIC oslThreadPriority SAL_CALL osl_getThreadPriority(const oslThread Thread);
-
-/** Returns True if the thread was created and has not terminated yet.
- Note that according to this definition a "running" thread might be
- suspended! Also returns False is Thread is NULL.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_isThreadRunning(const oslThread Thread);
-
-/** Blocks the calling thread until Thread has terminated.
- Returns immediately if Thread is NULL.
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_joinWithThread(oslThread Thread);
-
-/** Blocks the calling thread at least for the given number
- of time.
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_waitThread(const TimeValue* pDelay);
-
-/** The requested thread will get terminate the next time
- scheduleThread() is called.
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_terminateThread(oslThread Thread);
-
-/** Offers the rest of the threads time-slice to the OS.
- scheduleThread() should be called in the working loop
- of the thread, so any other thread could also get the
- processor. Returns False if the thread should terminate, so
- the thread could free any allocated resources.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_scheduleThread(oslThread Thread);
-
-/** Offers the rest of the threads time-slice to the OS.
- Under POSIX you _need_ to yield(), otherwise, since the
- threads are not preempted during execution, NO other thread
- (even with higher priority) gets the processor. Control is
- only given to another thread if the current thread blocks
- or uses yield().
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_yieldThread(void);
-
-/** Attempts to set the name of the current thread.
-
- The name of a thread is usually evaluated for debugging purposes. Not all
- platforms support this. On Linux, a set thread name can be observed with
- "ps -L". On Windows with the Microsoft compiler, a thread name set while a
- debugger is attached can be observed within the debugger.
-
- @param name the name of the thread; must not be null; on Linux, only the
- first 16 characters are used
-*/
-SAL_DLLPUBLIC void SAL_CALL osl_setThreadName(char const * name);
-
-/* Callback when data stored in a thread key is no longer needed */
-
-typedef void (SAL_CALL *oslThreadKeyCallbackFunction)(void *);
-
-/** Create a key to an associated thread local storage pointer. */
-SAL_DLLPUBLIC oslThreadKey SAL_CALL osl_createThreadKey(oslThreadKeyCallbackFunction pCallback);
-
-/** Destroy a key to an associated thread local storage pointer. */
-SAL_DLLPUBLIC void SAL_CALL osl_destroyThreadKey(oslThreadKey Key);
-
-/** Get to key associated thread specific data. */
-SAL_DLLPUBLIC void* SAL_CALL osl_getThreadKeyData(oslThreadKey Key);
-
-/** Set to key associated thread specific data. */
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_setThreadKeyData(oslThreadKey Key, void *pData);
-
-/** Get the current thread local text encoding. */
-SAL_DLLPUBLIC rtl_TextEncoding SAL_CALL osl_getThreadTextEncoding(void);
-
-/** Set the thread local text encoding.
- @return the old text encoding.
-*/
-SAL_DLLPUBLIC rtl_TextEncoding SAL_CALL osl_setThreadTextEncoding(rtl_TextEncoding Encoding);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OSL_THREAD_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/thread.hxx b/sal/inc/osl/thread.hxx
deleted file mode 100644
index 3a1b73e829ef..000000000000
--- a/sal/inc/osl/thread.hxx
+++ /dev/null
@@ -1,238 +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 _THREAD_HXX_
-#define _THREAD_HXX_
-
-#include "sal/config.h"
-
-#include <cassert>
-
-#include <osl/time.h>
-
-
-#include <osl/diagnose.h>
-#include <osl/thread.h>
-#include <rtl/alloc.h>
-
-namespace osl
-{
-/** threadFunc is the function which is executed by the threads
- created by the osl::Thread class. The function's signature
- matches the one of oslWorkerFunction which is declared in
- osl/thread.h .
-*/
-extern "C" inline void SAL_CALL threadFunc( void* param);
-
-/**
- A thread abstraction.
-
- @deprecated use ::salhelper::Thread instead. Only the static member
- functions ::osl::Thread::getCurrentIdentifier, ::osl::Thread::wait, and
- ::osl::Thread::yield are not deprecated.
- */
-class Thread
-{
- Thread( const Thread& );
- Thread& operator= ( const Thread& );
-public:
- // these are here to force memory de/allocation to sal lib.
- inline static void * SAL_CALL operator new( size_t nSize ) SAL_THROW (())
- { return ::rtl_allocateMemory( nSize ); }
- inline static void SAL_CALL operator delete( void * pMem ) SAL_THROW (())
- { ::rtl_freeMemory( pMem ); }
- inline static void * SAL_CALL operator new( size_t, void * pMem ) SAL_THROW (())
- { return pMem; }
- inline static void SAL_CALL operator delete( void *, void * ) SAL_THROW (())
- {}
-
- Thread(): m_hThread(0){}
-
- virtual ~Thread()
- {
- osl_destroyThread( m_hThread);
- }
-
- sal_Bool SAL_CALL create()
- {
- assert(m_hThread == 0); // only one running thread per instance
- m_hThread = osl_createSuspendedThread( threadFunc, (void*)this);
- if (m_hThread == 0)
- {
- return false;
- }
- osl_resumeThread(m_hThread);
- return true;
- }
-
- sal_Bool SAL_CALL createSuspended()
- {
- assert(m_hThread == 0); // only one running thread per instance
- if( m_hThread)
- return sal_False;
- m_hThread= osl_createSuspendedThread( threadFunc,
- (void*)this);
- return m_hThread != 0;
- }
-
- virtual void SAL_CALL suspend()
- {
- if( m_hThread )
- osl_suspendThread(m_hThread);
- }
-
- virtual void SAL_CALL resume()
- {
- if( m_hThread )
- osl_resumeThread(m_hThread);
- }
-
- virtual void SAL_CALL terminate()
- {
- if( m_hThread )
- osl_terminateThread(m_hThread);
- }
-
- virtual void SAL_CALL join()
- {
- osl_joinWithThread(m_hThread);
- }
-
- sal_Bool SAL_CALL isRunning() const
- {
- return osl_isThreadRunning(m_hThread);
- }
-
- void SAL_CALL setPriority( oslThreadPriority Priority)
- {
- if( m_hThread )
- osl_setThreadPriority(m_hThread, Priority);
- }
-
- oslThreadPriority SAL_CALL getPriority() const
- {
- return m_hThread ? osl_getThreadPriority(m_hThread) : osl_Thread_PriorityUnknown;
- }
-
- oslThreadIdentifier SAL_CALL getIdentifier() const
- {
- return osl_getThreadIdentifier(m_hThread);
- }
-
- static oslThreadIdentifier SAL_CALL getCurrentIdentifier()
- {
- return osl_getThreadIdentifier(0);
- }
-
- static void SAL_CALL wait(const TimeValue& Delay)
- {
- osl_waitThread(&Delay);
- }
-
- static void SAL_CALL yield()
- {
- osl_yieldThread();
- }
-
- static inline void setName(char const * name) throw () {
- osl_setThreadName(name);
- }
-
- virtual sal_Bool SAL_CALL schedule()
- {
- return m_hThread ? osl_scheduleThread(m_hThread) : sal_False;
- }
-
- SAL_CALL operator oslThread() const
- {
- return m_hThread;
- }
-
-protected:
-
- /** The thread functions calls the protected functions
- run and onTerminated.
- */
- friend void SAL_CALL threadFunc( void* param);
-
- virtual void SAL_CALL run() = 0;
-
- virtual void SAL_CALL onTerminated()
- {
- }
-
-private:
- oslThread m_hThread;
-};
-
-extern "C" inline void SAL_CALL threadFunc( void* param)
-{
- Thread* pObj= (Thread*)param;
- pObj->run();
- pObj->onTerminated();
-}
-
-class ThreadData
-{
- ThreadData( const ThreadData& );
- ThreadData& operator= (const ThreadData& );
-public:
- /// Create a thread specific local data key
- ThreadData( oslThreadKeyCallbackFunction pCallback= 0 )
- {
- m_hKey = osl_createThreadKey( pCallback );
- }
-
- /// Destroy a thread specific local data key
- ~ThreadData()
- {
- osl_destroyThreadKey(m_hKey);
- }
-
- /** Set the data associated with the data key.
- @returns True if operation was successful
- */
- sal_Bool SAL_CALL setData(void *pData)
- {
- return (osl_setThreadKeyData(m_hKey, pData));
- }
-
- /** Get the data associated with the data key.
- @returns The data asscoitaed with the data key or
- NULL if no data was set
- */
- void* SAL_CALL getData()
- {
- return osl_getThreadKeyData(m_hKey);
- }
-
- operator oslThreadKey() const
- {
- return m_hKey;
- }
-
-private:
- oslThreadKey m_hKey;
-};
-
-} // end namespace osl
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/time.h b/sal/inc/osl/time.h
deleted file mode 100644
index 4be9e7278419..000000000000
--- a/sal/inc/osl/time.h
+++ /dev/null
@@ -1,159 +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 _OSL_TIME_H_
-#define _OSL_TIME_H_
-
-#include "sal/config.h"
-
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/****************************************************************************/
-/* TimeValue */
-/****************************************************************************/
-
-#ifdef SAL_W32
-# pragma pack(push, 8)
-#endif
-
-/* Time since Jan-01-1970 */
-
-typedef struct {
- sal_uInt32 Seconds;
- sal_uInt32 Nanosec;
-} TimeValue;
-
-#if defined(SAL_W32)
-# pragma pack(pop)
-#endif
-
-
-/****************************************************************************/
-/* oslDateTime */
-/****************************************************************************/
-
-typedef struct _oslDateTime
-{
- /*----------------------------------------------------------------------*/
- /** contains the nanoseconds .
- */
- sal_uInt32 NanoSeconds;
-
- /** contains the seconds (0-59).
- */
- sal_uInt16 Seconds;
-
- /*----------------------------------------------------------------------*/
- /** contains the minutes (0-59).
- */
- sal_uInt16 Minutes;
-
- /*----------------------------------------------------------------------*/
- /** contains the hour (0-23).
- */
- sal_uInt16 Hours;
-
- /*----------------------------------------------------------------------*/
- /** is the day of month (1-31).
- */
- sal_uInt16 Day;
-
- /*----------------------------------------------------------------------*/
- /** is the day of week (0-6 , 0 : Sunday).
- */
- sal_uInt16 DayOfWeek;
-
- /*----------------------------------------------------------------------*/
- /** is the month of year (1-12).
- */
- sal_uInt16 Month;
-
- /*----------------------------------------------------------------------*/
- /** is the year.
- */
- sal_uInt16 Year;
-
-} oslDateTime;
-
-
-/** Get the current system time as TimeValue.
- @return false if any error occurs.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getSystemTime(
- TimeValue* pTimeVal );
-
-
-/** Get the GMT from a TimeValue and fill a struct oslDateTime
- @param[in] pTimeVal TimeValue
- @param[out] pDateTime On success it receives a struct oslDateTime
-
- @return sal_False if any error occurs else sal_True.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getDateTimeFromTimeValue(
- TimeValue* pTimeVal, oslDateTime* pDateTime );
-
-
-/** Get the GMT from a oslDateTime and fill a TimeValue
- @param[in] pDateTime oslDateTime
- @param[out] pTimeVal On success it receives a TimeValue
-
- @return sal_False if any error occurs else sal_True.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getTimeValueFromDateTime(
- oslDateTime* pDateTime, TimeValue* pTimeVal );
-
-
-/** Convert GMT to local time
- @param[in] pSystemTimeVal system time to convert
- @param[out] pLocalTimeVal On success it receives the local time
-
- @return sal_False if any error occurs else sal_True.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getLocalTimeFromSystemTime(
- TimeValue* pSystemTimeVal, TimeValue* pLocalTimeVal );
-
-
-/** Convert local time to GMT
- @param[in] pLocalTimeVal local time to convert
- @param[out] pSystemTimeVal On success it receives the system time
-
- @return sal_False if any error occurs else sal_True.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getSystemTimeFromLocalTime(
- TimeValue* pLocalTimeVal, TimeValue* pSystemTimeVal );
-
-
-/** Get the value of the global timer
- @return current timer value in milli seconds
- */
-
-SAL_DLLPUBLIC sal_uInt32 SAL_CALL osl_getGlobalTimer(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OSL_TIME_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/osl/util.h b/sal/inc/osl/util.h
deleted file mode 100644
index e9afe39ac20f..000000000000
--- a/sal/inc/osl/util.h
+++ /dev/null
@@ -1,50 +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 _OSL_UTIL_H_
-#define _OSL_UTIL_H_
-
-#include "sal/config.h"
-
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- @param pEthernetAddr 6 bytes of memory
-
- @return sal_True if the ethernetaddress could be retrieved. <br>
- sal_False if no address could be found. This may be either because
- there is no ethernet card or there is no appropriate algorithm
- implemented on the platform. In this case, pEthernetAddr is
- unchanged.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_getEthernetAddress( sal_uInt8 *pEthernetAddr );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/alloc.h b/sal/inc/rtl/alloc.h
deleted file mode 100644
index ef48d01719ee..000000000000
--- a/sal/inc/rtl/alloc.h
+++ /dev/null
@@ -1,257 +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 _RTL_ALLOC_H_
-#define _RTL_ALLOC_H_
-
-#include "sal/config.h"
-
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/** Allocate memory.
-
- A call to this function will return NULL upon the requested
- memory size being either zero or larger than currently allocatable.
-
- @param Bytes [in] memory size.
- @return pointer to allocated memory.
- */
-SAL_DLLPUBLIC void * SAL_CALL rtl_allocateMemory (
- sal_Size Bytes
-) SAL_THROW_EXTERN_C();
-
-
-/** Reallocate memory.
-
- A call to this function with parameter 'Ptr' being NULL
- is equivalent to a rtl_allocateMemory() call.
- A call to this function with parameter 'Bytes' being 0
- is equivalent to a rtl_freeMemory() call.
-
- @see rtl_allocateMemory()
- @see rtl_freeMemory()
-
- @param Ptr [in] pointer to previously allocated memory.
- @param Bytes [in] new memory size.
- @return pointer to reallocated memory. May differ from Ptr.
- */
-SAL_DLLPUBLIC void * SAL_CALL rtl_reallocateMemory (
- void * Ptr,
- sal_Size Bytes
-) SAL_THROW_EXTERN_C();
-
-
-/** Free memory.
- @param Ptr [in] pointer to previously allocated memory.
- @return none. Memory is released. Ptr is invalid.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_freeMemory (
- void * Ptr
-) SAL_THROW_EXTERN_C();
-
-
-/** Allocate and zero memory.
-
- A call to this function will return NULL upon the requested
- memory size being either zero or larger than currently allocatable.
-
- @param Bytes [in] memory size.
- @return pointer to allocated and zero'ed memory.
- */
-SAL_DLLPUBLIC void * SAL_CALL rtl_allocateZeroMemory (
- sal_Size Bytes
-) SAL_THROW_EXTERN_C();
-
-
-/** Zero and free memory.
- @param Ptr [in] pointer to previously allocated memory.
- @param Bytes [in] memory size.
- @return none. Memory is zero'ed and released. Ptr is invalid.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_freeZeroMemory (
- void * Ptr,
- sal_Size Bytes
-) SAL_THROW_EXTERN_C();
-
-
-/** Opaque rtl_arena_type.
- */
-typedef struct rtl_arena_st rtl_arena_type;
-
-#define RTL_ARENA_NAME_LENGTH 31
-
-
-/** rtl_arena_create()
- *
- * @param pName [in] descriptive name; for debugging purposes.
- * @param quantum [in] resource allocation unit / granularity; rounded up to next power of 2.
- * @param quantum_cache_max [in] max resources to cache; rounded up to next multiple of quantum; usually 0.
- * @param source_arena [in] passed as argument to source_alloc, source_free; usually NULL.
- * @param source_alloc [in] function to allocate resources; usually rtl_arena_alloc.
- * @param source_free [in] function to free resources; usually rtl_arena_free.
- * @param nFlags [in] flags; usually 0.
- *
- * @return pointer to rtl_arena_type, or NULL upon failure.
- *
- * @see rtl_arena_destroy()
- */
-SAL_DLLPUBLIC rtl_arena_type * SAL_CALL rtl_arena_create (
- const char * pName,
- sal_Size quantum,
- sal_Size quantum_cache_max,
- rtl_arena_type * source_arena,
- void * (SAL_CALL * source_alloc)(rtl_arena_type *, sal_Size *),
- void (SAL_CALL * source_free) (rtl_arena_type *, void *, sal_Size),
- int nFlags
-) SAL_THROW_EXTERN_C();
-
-
-/** rtl_arena_destroy()
- *
- * @param pArena [in] the arena to destroy.
- * @return None
- *
- * @see rtl_arena_create()
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_arena_destroy (
- rtl_arena_type * pArena
-) SAL_THROW_EXTERN_C();
-
-
-/** rtl_arena_alloc()
- *
- * @param pArena [in] arena from which resource is allocated.
- * @param pBytes [inout] size of resource to allocate.
- *
- * @return allocated resource, or NULL upon failure.
- *
- * @see rtl_arena_free()
- */
-SAL_DLLPUBLIC void * SAL_CALL rtl_arena_alloc (
- rtl_arena_type * pArena,
- sal_Size * pBytes
-) SAL_THROW_EXTERN_C();
-
-
-/** rtl_arena_free()
- *
- * @param pArena [in] arena from which resource was allocated.
- * @param pAddr [in] resource to free.
- * @param nBytes [in] size of resource.
- *
- * @return None.
- *
- * @see rtl_arena_alloc()
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_arena_free (
- rtl_arena_type * pArena,
- void * pAddr,
- sal_Size nBytes
-) SAL_THROW_EXTERN_C();
-
-
-/** Opaque rtl_cache_type.
- */
-typedef struct rtl_cache_st rtl_cache_type;
-
-#define RTL_CACHE_NAME_LENGTH 31
-
-#define RTL_CACHE_FLAG_BULKDESTROY 1
-
-/** rtl_cache_create()
- *
- * @param pName [in] descriptive name; for debugging purposes.
- * @param nObjSize [in] object size.
- * @param nObjAlign [in] object alignment; usually 0 for suitable default.
- * @param constructor [in] object constructor callback function; returning 1 for success or 0 for failure.
- * @param destructor [in] object destructor callback function.
- * @param reclaim [in] reclaim callback function.
- * @param pUserArg [in] opaque argument passed to callback functions.
- * @param pSource [in] opaque argument passed to callback functions.
- * @param nFlags [in] flags.
- *
- * @return pointer to rtl_cache_type, or NULL upon failure.
- *
- * @see rtl_cache_destroy()
- */
-SAL_DLLPUBLIC rtl_cache_type * SAL_CALL rtl_cache_create (
- const char * pName,
- sal_Size nObjSize,
- sal_Size nObjAlign,
- int (SAL_CALL * constructor)(void * pObj, void * pUserArg),
- void (SAL_CALL * destructor) (void * pObj, void * pUserArg),
- void (SAL_CALL * reclaim) (void * pUserArg),
- void * pUserArg,
- rtl_arena_type * pSource,
- int nFlags
-) SAL_THROW_EXTERN_C();
-
-
-/** rtl_cache_destroy()
- *
- * @param pCache [in] the cache to destroy.
- *
- * @return None.
- *
- * @see rtl_cache_create()
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_cache_destroy (
- rtl_cache_type * pCache
-) SAL_THROW_EXTERN_C();
-
-
-/** rtl_cache_alloc()
- *
- * @param pCache [in] cache from which object is allocated.
- *
- * @return pointer to allocated object, or NULL upon failure.
- */
-SAL_DLLPUBLIC void * SAL_CALL rtl_cache_alloc (
- rtl_cache_type * pCache
-) SAL_THROW_EXTERN_C();
-
-
-/** rtl_cache_free()
- *
- * @param pCache [in] cache from which object was allocated.
- * @param pObj [in] object to free.
- *
- * @return None.
- *
- * @see rtl_cache_alloc()
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_cache_free (
- rtl_cache_type * pCache,
- void * pObj
-) SAL_THROW_EXTERN_C();
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*_RTL_ALLOC_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/allocator.hxx b/sal/inc/rtl/allocator.hxx
deleted file mode 100644
index 05575c247fe9..000000000000
--- a/sal/inc/rtl/allocator.hxx
+++ /dev/null
@@ -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
- 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: */
diff --git a/sal/inc/rtl/bootstrap.h b/sal/inc/rtl/bootstrap.h
deleted file mode 100644
index 67fed2d92660..000000000000
--- a/sal/inc/rtl/bootstrap.h
+++ /dev/null
@@ -1,234 +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 _RTL_BOOTSTRAP_H_
-#define _RTL_BOOTSTRAP_H_
-
-#include "sal/config.h"
-
-#include "rtl/ustring.h"
-#include "sal/saldllapi.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- @file
-
- The described concept provides a platform independent way to access
- minimum bootstrap settings for every application by excplitly or
- implicitly passing the values to the application.<p>
-
- MULTI-LEVEL STRATEGY FOR RETRIEVAL OF BOOTSTRAP VALUES :<p>
-
- The 1st level is tried first. On failure,
- the next level is tried. Every query starts at the first level again, so
- that one setting may be taken from the 3rd and one from the 1st level.<p>
-
- 1st level: explicitly set variables via rtl_bootstrap_set()
-
- 2nd level: command line arguments. A "-env:SETTINGNAME=value" is given on
- command line. This allows to give an application a certain setting, even
- if an ini-file exists (espicially useful for e.g. daemons that want to
- start an executable with dynamical changing settings).<p>
-
- 3rd level: environment variables. The application tries to get the
- setting from the environment.<p>
-
- 4th level: executable ini-file. Every application looks for an ini-file.
- The filename defaults to /absoulte/path/to/executable[rc|.ini]
- (without .bin or .exe suffix). The ini-filename can be
- set by the special command line parameter
- '-env:INIFILENAME=/absolute/path/to/inifile' at runtime or it may
- be set at compiletime by an API-call.<p>
-
- 5th level: URE_BOOTSTRAP ini-file. If the bootstrap variable URE_BOOTSTRAP
- expands to the URL of an ini-file, that ini-file is searched.<p>
-
- 6th level: default. An application can have some default settings decided
- at compile time, which allow the application to run even with no
- deployment settings. <p>
-
- If neither of the above levels leads to an successful retrieval of the value
- (no default possible), the application may fail to start.<p>
-
- NAMING CONVENTIONS <p>
-
- Naming conventions for names of bootstrap values :
- Names may only include characters, that are allowed characters for
- environment variables. This excludes '.', ' ', ';', ':' and any non-ascii
- character. Names are case insensitive.<p>
-
- An ini-file is only allowed to have one section, which must be named '[Bootstrap]'.
- The section may be omitted.
- The section name does not appear in the name of the corresponding
- environment variable or commandline arg.
- Values maybe arbitrary unicode strings, they must be encoded in UTF8.<p>
-
- Example:<p>
-
- in an ini-file:
- <code>
- [Sectionname]
- Name=value
- </code><p>
-
- as commandline arg:
- <code>-env:Name=value</code><p>
-
- as environment
- <code>
- setenv Name value
- set Name=value
- </code><p>
-
- SPECIAL VARIABLES:
-
- <ul>
- <li> INIFILENAME<br>
- This variable allows to set the inifilename. This makes only sense, if the filename
- is different than the executable file name. It must be given on command line. If it is
- given the executable ini-file is ignored.
- </li>
- </ul>
-*/
-
-/** may be called by an application to set an ini-filename.
-
- <p>
- Must be called before rtl_bootstrap_get(). May not be called twice.
- If it is never called, the filename is based on the name of the executable,
- with the suffix ".ini" on Windows or "rc" on Unix.
-
- @param pFileUri URL of the inifile with path but WITHOUT suffix (.ini or rc)
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_bootstrap_setIniFileName( rtl_uString *pFileUri )
- SAL_THROW_EXTERN_C();
-
-/**
- @param ppValue
- out parameter. Contains always a valid rtl_uString pointer.
- @param pName
- The name of the bootstrap setting to be retrieved.
- @param pDefault
- maybe NULL. If once the default is
- returned, successive calls always return this
- default value, even when called with different
- defaults.
-
- @return <code>sal_True</code>, when a value could be retrieved successfully,
- <code>sal_False</code>, when none of the 4 methods gave a value. ppValue
- then contains ane empty string.
- When a pDefault value is given, the function returns always
- <code>sal_True</code>.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL rtl_bootstrap_get(
- rtl_uString *pName, rtl_uString **ppValue, rtl_uString *pDefault )
- SAL_THROW_EXTERN_C();
-
-/** Sets a bootstrap parameter.
-
- @param pName
- name of bootstrap parameter
- @param pValue
- value of bootstrap parameter
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_bootstrap_set(
- rtl_uString * pName, rtl_uString * pValue )
- SAL_THROW_EXTERN_C();
-
-
-typedef void * rtlBootstrapHandle;
-
-/**
- Opens a bootstrap argument container.
- @param pIniName [in] The name of the ini-file to use, if <code>NULL</code> defaults
- to the excutables name
- @return Handle for a boostrap argument container
-*/
-SAL_DLLPUBLIC rtlBootstrapHandle SAL_CALL rtl_bootstrap_args_open(rtl_uString * pIniName)
- SAL_THROW_EXTERN_C();
-
-/**
- Closes a boostrap agument container.
- @param handle [in] The handle got by <code>rtl_bootstrap_args_open()</code>
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_bootstrap_args_close(rtlBootstrapHandle handle)
- SAL_THROW_EXTERN_C();
-
-/**
- @param handle [in] The handle got by <code>rtl_bootstrap_args_open()</code>
- @param pName [in] The name of the variable to be retrieved
- @param ppValue [out] The result of the retrieval. *ppValue may be null in case of failure.
- @param pDefault [in] The default value for the retrieval, may be <code>NULL</code>
-
- @return The status of the retrieval, <code>sal_True</code> on success.
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL rtl_bootstrap_get_from_handle(
- rtlBootstrapHandle handle, rtl_uString *pName, rtl_uString **ppValue, rtl_uString *pDefault)
- SAL_THROW_EXTERN_C();
-
-
-/** Returns the name of the inifile associated with this handle.
-
- @param handle [in] The handle got by <code>rtl_bootstrap_args_open()</code>
- @param ppIniName [out] contains after the call the name of the ini-filename.
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_bootstrap_get_iniName_from_handle(
- rtlBootstrapHandle handle, rtl_uString ** ppIniName)
- SAL_THROW_EXTERN_C();
-
-/** Expands a macro using bootstrap variables.
-
- @param handle [in] The handle got by <code>rtl_bootstrap_args_open()</code>
- @param macro [inout] The macro to be expanded
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_bootstrap_expandMacros_from_handle(
- rtlBootstrapHandle handle, rtl_uString ** macro )
- SAL_THROW_EXTERN_C();
-/** Expands a macro using default bootstrap variables.
-
- @param macro [inout] The macro to be expanded
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_bootstrap_expandMacros(
- rtl_uString ** macro )
- SAL_THROW_EXTERN_C();
-
-/** Escapes special characters ("$" and "\").
-
- @param value
- an arbitrary, non-NULL value
-
- @param encoded
- non-NULL out parameter, receiving the given value with all occurrences of
- special characters ("$" and "\") escaped
-
- @since UDK 3.2.9
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_bootstrap_encode(
- rtl_uString const * value, rtl_uString ** encoded )
- SAL_THROW_EXTERN_C();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/bootstrap.hxx b/sal/inc/rtl/bootstrap.hxx
deleted file mode 100644
index 057e60625021..000000000000
--- a/sal/inc/rtl/bootstrap.hxx
+++ /dev/null
@@ -1,226 +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 _RTL_BOOTSTRAP_HXX_
-#define _RTL_BOOTSTRAP_HXX_
-#include <rtl/ustring.hxx>
-#include <rtl/bootstrap.h>
-
-namespace rtl
-{
- class Bootstrap
- {
- void * _handle;
-
- inline Bootstrap( Bootstrap const & ); // not impl
- inline Bootstrap & operator = ( Bootstrap const & ); // not impl
-
- public:
- /**
- * @see rtl_bootstrap_setIniFileName()
- */
- static inline void SAL_CALL setIniFilename( const ::rtl::OUString &sFileUri );
-
- /** Retrieves a bootstrap parameter
- @param sName name of the bootstrap value. case insensitive.
- @param outValue (out parameter). On success contains the value, otherwise
- an empty string.
- @return sal_False, if no value could be retrieved, otherwise sal_True
- @see rtl_bootstrap_get()
- */
- static inline sal_Bool get(
- const ::rtl::OUString &sName,
- ::rtl::OUString &outValue );
-
- /** Retrieves a bootstrap parameter
-
- @param sName name of the bootstrap value. case insensitive.
- @param outValue (out parameter). Contains the value associated with sName.
- @param aDefault if none of the other methods retrieved a value, outValue
- is assigned to a Default.
-
- @see rtl_bootstrap_get()
- */
- static inline void get(
- const ::rtl::OUString &sName,
- ::rtl::OUString &outValue,
- const ::rtl::OUString &aDefault );
-
- /** Sets a bootstrap parameter.
-
- @param name
- name of bootstrap parameter
- @param value
- value of bootstrap parameter
-
- @see rtl_bootstrap_set()
- */
- static inline void set( ::rtl::OUString const & name, ::rtl::OUString const & value )
- SAL_THROW(());
-
- /** default ctor.
- */
- inline Bootstrap();
-
- /** Opens a bootstrap argment container
- @see rtl_bootstrap_args_open()
- */
- inline Bootstrap(const OUString & iniName);
-
- /** Closes a bootstrap argument container
- @see rtl_bootstrap_args_close()
- */
- inline ~Bootstrap();
-
- /** Retrieves a bootstrap argument.
-
- It is first tried to retrieve the value via the global function
- and second via the special bootstrap container.
- @see rtl_bootstrap_get_from_handle()
- */
-
- inline sal_Bool getFrom(const ::rtl::OUString &sName,
- ::rtl::OUString &outValue) const;
-
- /** Retrieves a bootstrap argument.
-
- It is first tried to retrieve the value via the global function
- and second via the special bootstrap container.
- @see rtl_bootstrap_get_from_handle()
- */
- inline void getFrom(const ::rtl::OUString &sName,
- ::rtl::OUString &outValue,
- const ::rtl::OUString &aDefault) const;
-
- /** Retrieves the name of the underlying ini-file.
- @see rtl_bootstrap_get_iniName_from_handle()
- */
- inline void getIniName(::rtl::OUString & iniName) const;
-
- /** Expands a macro using bootstrap variables.
-
- @param macro [inout] The macro to be expanded
- */
- inline void expandMacrosFrom( ::rtl::OUString & macro ) const SAL_THROW(())
- { rtl_bootstrap_expandMacros_from_handle( _handle, &macro.pData ); }
-
- /** Expands a macro using default bootstrap variables.
-
- @param macro [inout] The macro to be expanded
- */
- static inline void expandMacros( ::rtl::OUString & macro ) SAL_THROW(())
- { rtl_bootstrap_expandMacros( &macro.pData ); }
-
- /** Provides the bootstrap internal handle.
-
- @return bootstrap handle
- */
- inline rtlBootstrapHandle getHandle() const SAL_THROW(())
- { return _handle; }
-
- /** Escapes special characters ("$" and "\").
-
- @param value
- an arbitrary value
-
- @return
- the given value, with all occurrences of special characters ("$" and
- "\") escaped
-
- @since UDK 3.2.9
- */
- static inline ::rtl::OUString encode( ::rtl::OUString const & value )
- SAL_THROW(());
- };
-
- //----------------------------------------------------------------------------
- // IMPLEMENTATION
- //----------------------------------------------------------------------------
- inline void Bootstrap::setIniFilename( const ::rtl::OUString &sFile )
- {
- rtl_bootstrap_setIniFileName( sFile.pData );
- }
-
- inline sal_Bool Bootstrap::get( const ::rtl::OUString &sName,
- ::rtl::OUString & outValue )
- {
- return rtl_bootstrap_get( sName.pData , &(outValue.pData) , 0 );
- }
-
- inline void Bootstrap::get( const ::rtl::OUString &sName,
- ::rtl::OUString & outValue,
- const ::rtl::OUString & sDefault )
- {
- rtl_bootstrap_get( sName.pData , &(outValue.pData) , sDefault.pData );
- }
-
- inline void Bootstrap::set( ::rtl::OUString const & name, ::rtl::OUString const & value )
- SAL_THROW(())
- {
- rtl_bootstrap_set( name.pData, value.pData );
- }
-
- inline Bootstrap::Bootstrap()
- {
- _handle = 0;
- }
-
- inline Bootstrap::Bootstrap(const OUString & iniName)
- {
- if(!iniName.isEmpty())
- _handle = rtl_bootstrap_args_open(iniName.pData);
-
- else
- _handle = 0;
- }
-
- inline Bootstrap::~Bootstrap()
- {
- rtl_bootstrap_args_close(_handle);
- }
-
-
- inline sal_Bool Bootstrap::getFrom(const ::rtl::OUString &sName,
- ::rtl::OUString &outValue) const
- {
- return rtl_bootstrap_get_from_handle(_handle, sName.pData, &outValue.pData, 0);
- }
-
- inline void Bootstrap::getFrom(const ::rtl::OUString &sName,
- ::rtl::OUString &outValue,
- const ::rtl::OUString &aDefault) const
- {
- rtl_bootstrap_get_from_handle(_handle, sName.pData, &outValue.pData, aDefault.pData);
- }
-
- inline void Bootstrap::getIniName(::rtl::OUString & iniName) const
- {
- rtl_bootstrap_get_iniName_from_handle(_handle, &iniName.pData);
- }
-
- inline ::rtl::OUString Bootstrap::encode( ::rtl::OUString const & value )
- SAL_THROW(())
- {
- ::rtl::OUString encoded;
- rtl_bootstrap_encode(value.pData, &encoded.pData);
- return encoded;
- }
-}
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/byteseq.h b/sal/inc/rtl/byteseq.h
deleted file mode 100644
index 99107143b601..000000000000
--- a/sal/inc/rtl/byteseq.h
+++ /dev/null
@@ -1,317 +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 _RTL_BYTESEQ_H_
-#define _RTL_BYTESEQ_H_
-
-#include "sal/config.h"
-
-#include "rtl/alloc.h"
-#include "rtl/ustring.h"
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/** Assures that the reference count of the given byte sequence is one. Otherwise a new copy
- of the sequence is created with a reference count of one.
-
- @param ppSequence sequence
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_byte_sequence_reference2One(
- sal_Sequence ** ppSequence )
- SAL_THROW_EXTERN_C();
-
-/** Reallocates length of byte sequence.
-
- @param ppSequence sequence
- @param nSize new size of sequence
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_byte_sequence_realloc(
- sal_Sequence ** ppSequence, sal_Int32 nSize )
- SAL_THROW_EXTERN_C();
-
-/** Acquires the byte sequence
-
- @param pSequence sequence, that is to be acquired
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_byte_sequence_acquire(
- sal_Sequence *pSequence )
- SAL_THROW_EXTERN_C();
-
-/** Releases the byte sequence. If the refcount drops to zero, the sequence is freed.
-
- @param pSequence sequence, that is to be released; invalid after call
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_byte_sequence_release(
- sal_Sequence *pSequence )
- SAL_THROW_EXTERN_C();
-
-/** Constructs a bytes sequence with length nLength. All bytes are set to zero.
-
- @param ppSequence inout sequence; on entry *ppSequence may be null, otherwise it is released;
- after the call, *ppSequence contains the newly constructed sequence
- @param nLength length of new sequence
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_byte_sequence_construct(
- sal_Sequence **ppSequence , sal_Int32 nLength )
- SAL_THROW_EXTERN_C();
-
-/** Constructs a bytes sequence with length nLength. The data is not initialized.
-
- @param ppSequence inout sequence; on entry *ppSequence may be null, otherwise it is released;
- after the call, *ppSequence contains the newly constructed sequence
- @param nLength length of new sequence
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_byte_sequence_constructNoDefault(
- sal_Sequence **ppSequence , sal_Int32 nLength )
- SAL_THROW_EXTERN_C();
-
-/** Constructs a byte sequence with length nLength and copies nLength bytes from pData.
-
- @param ppSequence inout sequence; on entry *ppSequence may be null, otherwise it is released;
- after the call, *ppSequence contains the newly constructed sequence
- @param pData initial data
- @param nLength length of new sequence
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_byte_sequence_constructFromArray(
- sal_Sequence **ppSequence, const sal_Int8 *pData , sal_Int32 nLength )
- SAL_THROW_EXTERN_C();
-
-/** Assigns the byte sequence pSequence to *ppSequence.
-
- @param ppSequence inout sequence; on entry *ppSequence may be null, otherwise it is released;
- after the call, *ppSequence references pSequence
- @param pSequence the source sequence
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_byte_sequence_assign(
- sal_Sequence **ppSequence , sal_Sequence *pSequence )
- SAL_THROW_EXTERN_C();
-
-/** Compares two byte sequences.
-
- @return true, if the data within the sequences are identical; false otherwise
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL rtl_byte_sequence_equals(
- sal_Sequence *pSequence1 , sal_Sequence *pSequence2 )
- SAL_THROW_EXTERN_C();
-
-/** Returns the data array pointer of the sequence.
-
- @return read-pointer to the data array of the sequence. If rtl_byte_sequence_reference2One()
- has been called before, the pointer may be casted to a non const pointer and
- the sequence may be modified
-*/
-SAL_DLLPUBLIC const sal_Int8 *SAL_CALL rtl_byte_sequence_getConstArray(
- sal_Sequence *pSequence )
- SAL_THROW_EXTERN_C();
-
-/** Returns the length of the sequence
-
- @param pSequence sequence handle
- @return length of the sequence
-*/
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_byte_sequence_getLength(
- sal_Sequence *pSequence )
- SAL_THROW_EXTERN_C();
-
-#ifdef __cplusplus
-}
-namespace rtl
-{
-
-enum __ByteSequence_NoDefault
-{
- /** This enum value can be used to create a bytesequence with uninitalized data
- */
- BYTESEQ_NODEFAULT = 0xcafe
-};
-
-enum __ByteSequence_NoAcquire
-{
- /** This enum value can be used to create a bytesequence from a C-Handle without
- acquiring the handle.
- */
- BYTESEQ_NOACQUIRE = 0xcafebabe
-};
-
-/** C++ class representing a SAL byte sequence.
- C++ Sequences are reference counted and shared, so the sequence keeps a handle to its data.
- To keep value semantics, copies are only generated if the sequence is to be modified
- (new handle).
-*/
-class SAL_WARN_UNUSED ByteSequence
-{
- /** sequence handle
- */
- sal_Sequence * _pSequence;
-
-public:
- /// @cond INTERNAL
- // these are here to force memory de/allocation to sal lib.
- inline static void * SAL_CALL operator new ( size_t nSize ) SAL_THROW(())
- { return ::rtl_allocateMemory( nSize ); }
- inline static void SAL_CALL operator delete ( void * pMem ) SAL_THROW(())
- { ::rtl_freeMemory( pMem ); }
- inline static void * SAL_CALL operator new ( size_t, void * pMem ) SAL_THROW(())
- { return pMem; }
- inline static void SAL_CALL operator delete ( void *, void * ) SAL_THROW(())
- {}
- /// @endcond
-
- /** Default constructor: Creates an empty sequence.
- */
- inline ByteSequence() SAL_THROW(());
- /** Copy constructor: Creates a copy of given sequence.
-
- @param rSeq another byte sequence
- */
- inline ByteSequence( const ByteSequence & rSeq ) SAL_THROW(());
- /** Copy constructor Creates a copy from the C-Handle.
-
- @param pSequence another byte sequence handle
- */
- inline ByteSequence( sal_Sequence *pSequence ) SAL_THROW(());
- /** Constructor: Creates a copy of given data bytes.
-
- @param pElements an array of bytes
- @param len number of bytes
- */
- inline ByteSequence( const sal_Int8 * pElements, sal_Int32 len );
- /** Constructor: Creates sequence of given length and initializes all bytes to 0.
-
- @param len initial sequence length
- */
- inline ByteSequence( sal_Int32 len );
- /** Constructor: Creates sequence of given length and does NOT initialize data.
- Use this ctor for performance optimization only.
-
- @param len initial sequence length
- @param nodefault dummy parameter forcing explicit BYTESEQ_NODEFAULT
- */
- inline ByteSequence( sal_Int32 len , enum __ByteSequence_NoDefault nodefault );
- /** Constructor:
- Creates a sequence from a C-Handle without acquiring the handle, thus taking
- over owenership. Eitherway the handle is release by the destructor.
- This ctor is useful, when working with a c-interface (it safes a pair of
- acquire and release call and is thus a performance optimization only).
-
- @param pSequence sequence handle to be taken over
- @param noacquire dummy parameter forcing explicit BYTESEQ_NOACQUIRE
- */
- inline ByteSequence( sal_Sequence *pSequence , enum __ByteSequence_NoAcquire noacquire ) SAL_THROW(());
- /** Destructor: Releases sequence handle. Last handle will free memory.
- */
- inline ~ByteSequence() SAL_THROW(());
-
- /** Assignment operator: Acquires given sequence handle and releases a previously set handle.
-
- @param rSeq another byte sequence
- @return this sequence
- */
- inline ByteSequence & SAL_CALL operator = ( const ByteSequence & rSeq ) SAL_THROW(());
-
- /** Gets the length of sequence.
-
- @return length of sequence
- */
- inline sal_Int32 SAL_CALL getLength() const SAL_THROW(())
- { return _pSequence->nElements; }
-
- /** Gets a pointer to byte array for READING. If the sequence has a length of 0, then the
- returned pointer is undefined.
-
- @return pointer to byte array
- */
- inline const sal_Int8 * SAL_CALL getConstArray() const SAL_THROW(())
- { return (const sal_Int8 *)_pSequence->elements; }
- /** Gets a pointer to elements array for READING AND WRITING. In general if the sequence
- has a handle acquired by other sequences (reference count > 1), then a new sequence is
- created copying all bytes to keep value semantics!
- If the sequence has a length of 0, then the returned pointer is undefined.
-
- @return pointer to elements array
- */
- inline sal_Int8 * SAL_CALL getArray();
-
- /** Non-const index operator:
- Obtains a reference to byte indexed at given position.
- In general if the sequence has a handle acquired by other
- sequences (reference count > 1), then a new sequence is created
- copying all bytes to keep value semantics!
-
- @attention
- The implementation does NOT check for array bounds!
-
- @param nIndex index
- @return non-const C++ reference to element at index nIndex
- */
- inline sal_Int8 & SAL_CALL operator [] ( sal_Int32 nIndex );
-
- /** Const index operator: Obtains a reference to byte indexed at given position.
- The implementation does NOT check for array bounds!
-
- @param nIndex index
- @return const C++ reference to byte at element of indenx nIndex
- */
- inline const sal_Int8 & SAL_CALL operator [] ( sal_Int32 nIndex ) const SAL_THROW(())
- { return getConstArray()[ nIndex ]; }
-
- /** Equality operator: Compares two sequences.
-
- @param rSeq another byte sequence (right side)
- @return true if both sequences are equal, false otherwise
- */
- inline sal_Bool SAL_CALL operator == ( const ByteSequence & rSeq ) const SAL_THROW(());
- /** Unequality operator: Compares two sequences.
-
- @param rSeq another byte sequence (right side)
- @return false if both sequences are equal, true otherwise
- */
- inline sal_Bool SAL_CALL operator != ( const ByteSequence & rSeq ) const SAL_THROW(());
-
- /** Reallocates sequence to new length. If the sequence has a handle acquired by other sequences
- (reference count > 1), then the remaining elements are copied to a new sequence handle to
- keep value semantics!
-
- @param nSize new size of sequence
- */
- inline void SAL_CALL realloc( sal_Int32 nSize );
-
- /** Returns the UNnacquired C handle of the sequence
-
- @return UNacquired handle of the sequence
- */
- inline sal_Sequence * SAL_CALL getHandle() const SAL_THROW(())
- { return _pSequence; }
- /** Returns the UNnacquired C handle of the sequence (for compatibility reasons)
-
- @return UNacquired handle of the sequence
- */
- inline sal_Sequence * SAL_CALL get() const SAL_THROW(())
- { return _pSequence; }
-};
-
-}
-#endif
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/byteseq.hxx b/sal/inc/rtl/byteseq.hxx
deleted file mode 100644
index 800447395178..000000000000
--- a/sal/inc/rtl/byteseq.hxx
+++ /dev/null
@@ -1,136 +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 _RTL_BYTESEQ_HXX_
-#define _RTL_BYTESEQ_HXX_
-
-#include <osl/interlck.h>
-#include <rtl/byteseq.h>
-#include <rtl/alloc.h>
-
-#if ! defined EXCEPTIONS_OFF
-#include <new>
-#endif
-
-
-namespace rtl
-{
-
-//__________________________________________________________________________________________________
-inline ByteSequence::ByteSequence() SAL_THROW(())
- : _pSequence( 0 )
-{
- ::rtl_byte_sequence_construct( &_pSequence, 0 );
-}
-//__________________________________________________________________________________________________
-inline ByteSequence::ByteSequence( const ByteSequence & rSeq ) SAL_THROW(())
- : _pSequence( 0 )
-{
- ::rtl_byte_sequence_assign( &_pSequence, rSeq._pSequence );
-}
-//__________________________________________________________________________________________________
-inline ByteSequence::ByteSequence( sal_Sequence *pSequence) SAL_THROW(())
- : _pSequence( pSequence )
-{
- ::rtl_byte_sequence_acquire( pSequence );
-}
-//__________________________________________________________________________________________________
-inline ByteSequence::ByteSequence( const sal_Int8 * pElements, sal_Int32 len )
- : _pSequence( 0 )
-{
- ::rtl_byte_sequence_constructFromArray( &_pSequence, pElements, len );
-#if ! defined EXCEPTIONS_OFF
- if (_pSequence == 0)
- throw ::std::bad_alloc();
-#endif
-}
-//__________________________________________________________________________________________________
-inline ByteSequence::ByteSequence( sal_Int32 len, enum __ByteSequence_NoDefault )
- : _pSequence( 0 )
-{
- ::rtl_byte_sequence_constructNoDefault( &_pSequence, len );
-#if ! defined EXCEPTIONS_OFF
- if (_pSequence == 0)
- throw ::std::bad_alloc();
-#endif
-}
-//__________________________________________________________________________________________________
-inline ByteSequence::ByteSequence( sal_Sequence *pSequence, enum __ByteSequence_NoAcquire ) SAL_THROW(())
- : _pSequence( pSequence )
-{
-}
-//__________________________________________________________________________________________________
-inline ByteSequence::ByteSequence( sal_Int32 len )
- : _pSequence( 0 )
-{
- ::rtl_byte_sequence_construct( &_pSequence, len );
-#if ! defined EXCEPTIONS_OFF
- if (_pSequence == 0)
- throw ::std::bad_alloc();
-#endif
-}
-//__________________________________________________________________________________________________
-inline ByteSequence::~ByteSequence() SAL_THROW(())
-{
- ::rtl_byte_sequence_release( _pSequence );
-}
-//__________________________________________________________________________________________________
-inline ByteSequence & ByteSequence::operator = ( const ByteSequence & rSeq ) SAL_THROW(())
-{
- ::rtl_byte_sequence_assign( &_pSequence, rSeq._pSequence );
- return *this;
-}
-//__________________________________________________________________________________________________
-inline sal_Bool ByteSequence::operator == ( const ByteSequence & rSeq ) const SAL_THROW(())
-{
- return ::rtl_byte_sequence_equals( _pSequence, rSeq._pSequence );
-}
-//__________________________________________________________________________________________________
-inline sal_Int8 * ByteSequence::getArray()
-{
- ::rtl_byte_sequence_reference2One( &_pSequence );
-#if ! defined EXCEPTIONS_OFF
- if (_pSequence == 0)
- throw ::std::bad_alloc();
-#endif
- return (sal_Int8 *)_pSequence->elements;
-}
-//__________________________________________________________________________________________________
-inline void ByteSequence::realloc( sal_Int32 nSize )
-{
- ::rtl_byte_sequence_realloc( &_pSequence, nSize );
-#if ! defined EXCEPTIONS_OFF
- if (_pSequence == 0)
- throw ::std::bad_alloc();
-#endif
-}
-//__________________________________________________________________________________________________
-inline sal_Int8 & ByteSequence::operator [] ( sal_Int32 nIndex )
-{
- return getArray()[ nIndex ];
-}
-//__________________________________________________________________________________________________
-inline sal_Bool ByteSequence::operator != ( const ByteSequence & rSeq ) const SAL_THROW(())
-{
- return (! operator == ( rSeq ));
-}
-
-}
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/character.hxx b/sal/inc/rtl/character.hxx
deleted file mode 100644
index 0ba86d6c065b..000000000000
--- a/sal/inc/rtl/character.hxx
+++ /dev/null
@@ -1,144 +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_CHARACTER_HXX
-#define INCLUDED_RTL_CHARACTER_HXX
-
-#include "sal/config.h"
-
-#include "sal/types.h"
-
-namespace rtl
-{
-/** Check for ASCII character.
-
- @param nUtf32 A Unicode scalar value (represented as a UTF-32 code unit).
-
- @return True if nChar is a ASCII character (0x00--0x7F).
-
- @since LibreOffice 4.1
- */
-inline bool isAscii(sal_uInt32 nUtf32)
-{
- return nUtf32 <= 0x7F;
-}
-
-/** Check for ASCII lower case character.
-
- @param nUtf32 A Unicode scalar value (represented as a UTF-32 code unit).
-
- @return True if nChar is a US-ASCII lower case alphabetic character
- (ASCII 'a'--'z').
-
- @since LibreOffice 4.1
- */
-inline bool isAsciiLowerCase(sal_uInt32 nUtf32)
-{
- return nUtf32 >= 'a' && nUtf32 <= 'z';
-}
-
-/** Check for US-ASCII upper case character.
-
- @param nUtf32 A Unicode scalar value (represented as a UTF-32 code unit).
-
- @return True if nChar is a US-ASCII upper case alphabetic character
- (US-ASCII 'A'--'Z').
-
- @since LibreOffice 4.1
- */
-inline bool isAsciiUpperCase(sal_uInt32 nUtf32)
-{
- return nUtf32 >= 'A' && nUtf32 <= 'Z';
-}
-
-/** Check for ASCII alphanumeric character.
-
- @param nUtf32 A Unicode scalar value (represented as a UTF-32 code unit).
-
- @return True if nUtf32 is a US-ASCII alphanumeric character
- (ASCII '0'--'9', 'A'--'Z' or 'a'--'z').
-
- @since LibreOffice 4.1
- */
-inline bool isAsciiAlpha(sal_uInt32 nUtf32)
-{
- return isAsciiLowerCase(nUtf32) || isAsciiUpperCase(nUtf32);
-}
-
-/** Check for ASCII digit character.
-
- @param nUtf32 A Unicode scalar value (represented as a UTF-32 code unit).
-
- @return True if nChar is a ASCII (decimal) digit character
- (ASCII '0'--'9').
-
- @since LibreOffice 4.1
- */
-inline bool isAsciiDigit(sal_uInt32 nUtf32)
-{
- return nUtf32 >= '0' && nUtf32 <= '9';
-}
-
-/** Check for US-ASCII alphanumeric character.
-
- @param nUtf32 A Unicode scalar value (represented as a UTF-32 code unit).
-
- @return True if nChar is a US-ASCII alphanumeric character (US-ASCII
- '0'--'9', 'A'--'Z' or 'a'--'z').
-
- @since LibreOffice 4.1
- */
-inline bool isAsciiAlphanumeric(sal_uInt32 nUtf32)
-{
- return isAsciiDigit(nUtf32) || isAsciiAlpha(nUtf32);
-}
-
-/** Check for US-ASCII canonic hexadecimal digit character.
-
- @param nUtf32 A Unicode scalar value (represented as a UTF-32 code unit).
-
- @return True if nChar is a US-ASCII canonic (i.e., upper case)
- hexadecimal digit character (US-ASCII '0'--'9' or 'A'--'F').
-
- @since LibreOffice 4.1
- */
-inline bool isAsciiCanonicHexDigit(sal_uInt32 nUtf32)
-{
- return isAsciiDigit(nUtf32) || (nUtf32 >= 'A' && nUtf32 <= 'F');
-}
-
-/** Check for US-ASCII hexadecimal digit character.
-
- @param nUtf32 A Unicode scalar value (represented as a UTF-32 code unit).
-
- @return True if nChar is a US-ASCII hexadecimal digit character (US-
- ASCII '0'--'9', 'A'--'F', 'a'--'f').
-
- @since LibreOffice 4.1
- */
-inline bool isAsciiHexDigit(sal_uInt32 nUtf32)
-{
- return isAsciiCanonicHexDigit(nUtf32) || (nUtf32 >= 'a' && nUtf32 <= 'f');
-}
-
-}//rtl namespace
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/cipher.h b/sal/inc/rtl/cipher.h
deleted file mode 100644
index a116e57ba071..000000000000
--- a/sal/inc/rtl/cipher.h
+++ /dev/null
@@ -1,317 +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 _RTL_CIPHER_H_
-#define _RTL_CIPHER_H_
-
-#include "sal/config.h"
-
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*========================================================================
- *
- * rtlCipher interface.
- *
- *======================================================================*/
-/** Cipher Handle opaque type.
- */
-typedef void* rtlCipher;
-
-
-/** Cipher Algorithm enumeration.
- @see rtl_cipher_create()
- */
-enum __rtl_CipherAlgorithm
-{
- rtl_Cipher_AlgorithmBF,
- rtl_Cipher_AlgorithmARCFOUR,
- rtl_Cipher_AlgorithmInvalid,
- rtl_Cipher_Algorithm_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-};
-
-/** Cipher Algorithm type.
- */
-typedef enum __rtl_CipherAlgorithm rtlCipherAlgorithm;
-
-
-/** Cipher Mode enumeration.
- @see rtl_cipher_create()
- */
-enum __rtl_CipherMode
-{
- rtl_Cipher_ModeECB,
- rtl_Cipher_ModeCBC,
- rtl_Cipher_ModeStream,
- rtl_Cipher_ModeInvalid,
- rtl_Cipher_Mode_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-};
-
-/** Cipher Mode type.
- */
-typedef enum __rtl_CipherMode rtlCipherMode;
-
-
-/** Cipher Direction enumeration.
- @see rtl_cipher_init()
- */
-enum __rtl_CipherDirection
-{
- rtl_Cipher_DirectionBoth,
- rtl_Cipher_DirectionDecode,
- rtl_Cipher_DirectionEncode,
- rtl_Cipher_DirectionInvalid,
- rtl_Cipher_Direction_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-};
-
-/** Cipher Direction type.
- */
-typedef enum __rtl_CipherDirection rtlCipherDirection;
-
-
-/** Error Code enumeration.
- */
-enum __rtl_CipherError
-{
- rtl_Cipher_E_None,
- rtl_Cipher_E_Argument,
- rtl_Cipher_E_Algorithm,
- rtl_Cipher_E_Direction,
- rtl_Cipher_E_Mode,
- rtl_Cipher_E_BufferSize,
- rtl_Cipher_E_Memory,
- rtl_Cipher_E_Unknown,
- rtl_Cipher_E_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-};
-
-/** Error Code type.
- */
-typedef enum __rtl_CipherError rtlCipherError;
-
-
-/** Create a cipher handle for the given algorithm and mode.
- @see rtlCipherAlgorithm
- @see rtlCipherMode
-
- @param Algorithm [in] cipher algorithm.
- @param Mode [in] cipher mode.
- @return Cipher handle, or 0 upon failure.
- */
-SAL_DLLPUBLIC rtlCipher SAL_CALL rtl_cipher_create (
- rtlCipherAlgorithm Algorithm,
- rtlCipherMode Mode
-) SAL_THROW_EXTERN_C();
-
-
-/** Inititialize a cipher for the given direction.
- @see rtlCipherDirection
-
- @param Cipher [in] cipher handle.
- @param Direction [in] cipher direction.
- @param pKeyData [in] key material buffer.
- @param nKeyLen [in] key material length in bytes.
- @param pArgData [in] initialization vector buffer.
- @param nArgLen [in] initialization vector length in bytes.
- @return rtl_Cipher_E_None upon success.
- */
-SAL_DLLPUBLIC rtlCipherError SAL_CALL rtl_cipher_init (
- rtlCipher Cipher,
- rtlCipherDirection Direction,
- const sal_uInt8 *pKeyData, sal_Size nKeyLen,
- const sal_uInt8 *pArgData, sal_Size nArgLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Encode a buffer under a given cipher algorithm.
- @pre Initialized for a compatible cipher direction.
- @see rtl_cipher_init()
-
- @param Cipher [in] cipher handle.
- @param pData [in] plaintext buffer.
- @param nDatLen [in] plaintext length in bytes.
- @param pBuffer [out] ciphertext buffer.
- @param nBufLen [in] ciphertext length in bytes.
- @return rtl_Cipher_E_None upon success.
- */
-SAL_DLLPUBLIC rtlCipherError SAL_CALL rtl_cipher_encode (
- rtlCipher Cipher,
- const void *pData, sal_Size nDatLen,
- sal_uInt8 *pBuffer, sal_Size nBufLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Decode a buffer under a given cipher algorithm.
- @pre Initialized for a compatible cipher direction.
- @see rtl_cipher_init()
-
- @param Cipher [in] cipher handle.
- @param pData [in] ciphertext buffer.
- @param nDatLen [in] ciphertext length in bytes.
- @param pBuffer [out] plaintext buffer.
- @param nBufLen [in] plaintext length in bytes.
- @return rtl_Cipher_E_None upon success.
- */
-SAL_DLLPUBLIC rtlCipherError SAL_CALL rtl_cipher_decode (
- rtlCipher Cipher,
- const void *pData, sal_Size nDatLen,
- sal_uInt8 *pBuffer, sal_Size nBufLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Destroy a cipher handle.
- @param Cipher [in] cipher handle to be destroyed.
- @return None. Cipher handle destroyed and invalid.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_cipher_destroy (
- rtlCipher Cipher
-) SAL_THROW_EXTERN_C();
-
-
-/*========================================================================
- *
- * rtl_cipherBF (Blowfish) interface.
- *
- *======================================================================*/
-/** Create a Blowfish cipher handle for the given mode.
-
- The Blowfish block cipher algorithm is specified in
- Bruce Schneier: Applied Cryptography, 2nd edition, ch. 14.3
-
- @see rtl_cipher_create()
- */
-SAL_DLLPUBLIC rtlCipher SAL_CALL rtl_cipher_createBF (
- rtlCipherMode Mode
-) SAL_THROW_EXTERN_C();
-
-
-/** Inititialize a Blowfish cipher for the given direction.
- @see rtl_cipher_init()
- */
-SAL_DLLPUBLIC rtlCipherError SAL_CALL rtl_cipher_initBF (
- rtlCipher Cipher,
- rtlCipherDirection Direction,
- const sal_uInt8 *pKeyData, sal_Size nKeyLen,
- const sal_uInt8 *pArgData, sal_Size nArgLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Encode a buffer under the Blowfish cipher algorithm.
- @see rtl_cipher_encode()
- */
-SAL_DLLPUBLIC rtlCipherError SAL_CALL rtl_cipher_encodeBF (
- rtlCipher Cipher,
- const void *pData, sal_Size nDatLen,
- sal_uInt8 *pBuffer, sal_Size nBufLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Decode a buffer under the Blowfish cipher algorithm.
- @see rtl_cipher_decode()
- */
-SAL_DLLPUBLIC rtlCipherError SAL_CALL rtl_cipher_decodeBF (
- rtlCipher Cipher,
- const void *pData, sal_Size nDatLen,
- sal_uInt8 *pBuffer, sal_Size nBufLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Destroy a Blowfish cipher handle.
- @see rtl_cipher_destroy()
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_cipher_destroyBF (
- rtlCipher Cipher
-) SAL_THROW_EXTERN_C();
-
-
-/*========================================================================
- *
- * rtl_cipherARCFOUR (RC4) interface.
- *
- *======================================================================*/
-/** Create a RC4 cipher handle for the given mode.
-
- The RC4 symmetric stream cipher algorithm is specified in
- Bruce Schneier: Applied Cryptography, 2nd edition, ch. 17.1
-
- @see rtl_cipher_create()
-
- @param Mode [in] cipher mode. Must be rtl_Cipher_ModeStream.
- @return Cipher handle, or 0 upon failure.
- */
-SAL_DLLPUBLIC rtlCipher SAL_CALL rtl_cipher_createARCFOUR (
- rtlCipherMode Mode
-) SAL_THROW_EXTERN_C();
-
-
-/** Inititialize a RC4 cipher for the given direction.
- @see rtl_cipher_init()
- */
-SAL_DLLPUBLIC rtlCipherError SAL_CALL rtl_cipher_initARCFOUR (
- rtlCipher Cipher,
- rtlCipherDirection Direction,
- const sal_uInt8 *pKeyData, sal_Size nKeyLen,
- const sal_uInt8 *pArgData, sal_Size nArgLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Encode a buffer under the RC4 cipher algorithm.
- @see rtl_cipher_encode()
- */
-SAL_DLLPUBLIC rtlCipherError SAL_CALL rtl_cipher_encodeARCFOUR (
- rtlCipher Cipher,
- const void *pData, sal_Size nDatLen,
- sal_uInt8 *pBuffer, sal_Size nBufLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Decode a buffer under the RC4 cipher algorithm.
- @see rtl_cipher_decode()
- */
-SAL_DLLPUBLIC rtlCipherError SAL_CALL rtl_cipher_decodeARCFOUR (
- rtlCipher Cipher,
- const void *pData, sal_Size nDatLen,
- sal_uInt8 *pBuffer, sal_Size nBufLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Destroy a RC4 cipher handle.
- @see rtl_cipher_destroy()
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_cipher_destroyARCFOUR (
- rtlCipher Cipher
-) SAL_THROW_EXTERN_C();
-
-
-/*========================================================================
- *
- * The End.
- *
- *======================================================================*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !_RTL_CIPHER_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/crc.h b/sal/inc/rtl/crc.h
deleted file mode 100644
index 7fad87ef4f37..000000000000
--- a/sal/inc/rtl/crc.h
+++ /dev/null
@@ -1,63 +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 _RTL_CRC_H_
-#define _RTL_CRC_H_
-
-#include "sal/config.h"
-
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*========================================================================
- *
- * rtl_crc32 interface.
- *
- *======================================================================*/
-/** Evaluate CRC32 over given data.
-
- This function evaluates the CRC polynomial 0xEDB88320.
-
- @param Crc [in] CRC32 over previous data or zero.
- @param Data [in] data buffer.
- @param DatLen [in] data buffer length.
- @return new CRC32 value.
- */
-SAL_DLLPUBLIC sal_uInt32 SAL_CALL rtl_crc32 (
- sal_uInt32 Crc,
- const void *Data, sal_uInt32 DatLen
-) SAL_THROW_EXTERN_C();
-
-/*========================================================================
- *
- * The End.
- *
- *======================================================================*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTL_CRC_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/digest.h b/sal/inc/rtl/digest.h
deleted file mode 100644
index cc49838821f7..000000000000
--- a/sal/inc/rtl/digest.h
+++ /dev/null
@@ -1,643 +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 _RTL_DIGEST_H_
-#define _RTL_DIGEST_H_
-
-#include "sal/config.h"
-
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*========================================================================
- *
- * rtlDigest.
- *
- *======================================================================*/
-/** Digest Handle opaque type.
- */
-typedef void* rtlDigest;
-
-
-/** Digest Algorithm enumeration.
- @see rtl_digest_create()
- */
-enum __rtl_DigestAlgorithm
-{
- rtl_Digest_AlgorithmMD2,
- rtl_Digest_AlgorithmMD5,
- rtl_Digest_AlgorithmSHA,
- rtl_Digest_AlgorithmSHA1,
-
- rtl_Digest_AlgorithmHMAC_MD5,
- rtl_Digest_AlgorithmHMAC_SHA1,
-
- rtl_Digest_AlgorithmInvalid,
- rtl_Digest_Algorithm_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-};
-
-/** Digest Algorithm type.
- */
-typedef enum __rtl_DigestAlgorithm rtlDigestAlgorithm;
-
-
-/** Error Code enumeration.
- */
-enum __rtl_DigestError
-{
- rtl_Digest_E_None,
- rtl_Digest_E_Argument,
- rtl_Digest_E_Algorithm,
- rtl_Digest_E_BufferSize,
- rtl_Digest_E_Memory,
- rtl_Digest_E_Unknown,
- rtl_Digest_E_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-};
-
-/** Error Code type.
- */
-typedef enum __rtl_DigestError rtlDigestError;
-
-
-/** Create a digest handle for the given algorithm.
- @see rtlDigestAlgorithm
-
- @param Algorithm [in] digest algorithm.
- @return Digest handle, or 0 upon failure.
- */
-SAL_DLLPUBLIC rtlDigest SAL_CALL rtl_digest_create (
- rtlDigestAlgorithm Algorithm
-) SAL_THROW_EXTERN_C();
-
-
-/** Destroy a digest handle.
- @post Digest handle destroyed and invalid.
- @param Digest [in] digest handle to be destroyed.
- @return None.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_digest_destroy (
- rtlDigest Digest
-) SAL_THROW_EXTERN_C();
-
-
-/** Query the algorithm of a given digest.
- @param Digest [in] digest handle.
- @return digest algorithm, or rtl_Digest_AlgorithmInvalid upon failure.
- */
-SAL_DLLPUBLIC rtlDigestAlgorithm SAL_CALL rtl_digest_queryAlgorithm (
- rtlDigest Digest
-) SAL_THROW_EXTERN_C();
-
-
-/** Query the length of a given digest.
- @param Digest [in] digest handle.
- @return digest length, or 0 upon failure.
- */
-SAL_DLLPUBLIC sal_uInt32 SAL_CALL rtl_digest_queryLength (
- rtlDigest Digest
-) SAL_THROW_EXTERN_C();
-
-
-/** Initialize a digest with given data.
- @param Digest [in] digest handle.
- @param pData [in] data buffer.
- @param nDatLen [in] data length.
-
- @return rtl_Digest_E_None upon success.
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_init (
- rtlDigest Digest,
- const sal_uInt8 *pData, sal_uInt32 nDatLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Update a digest with given data.
- @param Digest [in] digest handle.
- @param pData [in] data buffer.
- @param nDatLen [in] data length.
-
- @return rtl_Digest_E_None upon success.
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_update (
- rtlDigest Digest,
- const void *pData, sal_uInt32 nDatLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Finalize a digest and retrieve the digest value.
- @pre Digest value length must not be less than digest length.
- @post Digest initialized to accept another update sequence.
- @see rtl_digest_queryLength()
- @see rtl_digest_update()
-
- @param Digest [in] digest handle.
- @param pBuffer [in] digest value buffer.
- @param nBufLen [in] digest value length.
-
- @return rtl_Digest_E_None upon success.
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_get (
- rtlDigest Digest,
- sal_uInt8 *pBuffer, sal_uInt32 nBufLen
-) SAL_THROW_EXTERN_C();
-
-/*========================================================================
- *
- * rtl_digest_MD2 interface.
- *
- *======================================================================*/
-#define RTL_DIGEST_LENGTH_MD2 16
-
-/** Create a MD2 digest handle.
-
- The MD2 digest algorithm is specified in
- RFC 1319 (Informational)
- The MD2 Message-Digest Algorithm
-
- @see rtl_digest_create()
- */
-SAL_DLLPUBLIC rtlDigest SAL_CALL rtl_digest_createMD2 (void) SAL_THROW_EXTERN_C();
-
-
-/** Destroy a MD2 digest handle.
- @see rtl_digest_destroy()
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_digest_destroyMD2 (
- rtlDigest Digest
-) SAL_THROW_EXTERN_C();
-
-
-/** Update a MD2 digest with given data.
- @see rtl_digest_update()
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_updateMD2 (
- rtlDigest Digest,
- const void *pData, sal_uInt32 nDatLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Finalize a MD2 digest and retrieve the digest value.
- @see rtl_digest_get()
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_getMD2 (
- rtlDigest Digest,
- sal_uInt8 *pBuffer, sal_uInt32 nBufLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Evaluate a MD2 digest value from given data.
-
- This function performs an optimized call sequence on a
- single data buffer, avoiding digest creation and destruction.
-
- @see rtl_digest_updateMD2()
- @see rtl_digest_getMD2()
-
- @param pData [in] data buffer.
- @param nDatLen [in] data length.
- @param pBuffer [in] digest value buffer.
- @param nBufLen [in] digest value length.
-
- @return rtl_Digest_E_None upon success.
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_MD2 (
- const void *pData, sal_uInt32 nDatLen,
- sal_uInt8 *pBuffer, sal_uInt32 nBufLen
-) SAL_THROW_EXTERN_C();
-
-/*========================================================================
- *
- * rtl_digest_MD5 interface.
- *
- *======================================================================*/
-#define RTL_DIGEST_LENGTH_MD5 16
-
-/** Create a MD5 digest handle.
-
- The MD5 digest algorithm is specified in
- RFC 1321 (Informational)
- The MD5 Message-Digest Algorithm
-
- @see rtl_digest_create()
- */
-SAL_DLLPUBLIC rtlDigest SAL_CALL rtl_digest_createMD5 (void) SAL_THROW_EXTERN_C();
-
-
-/** Destroy a MD5 digest handle.
- @see rtl_digest_destroy()
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_digest_destroyMD5 (
- rtlDigest Digest
-) SAL_THROW_EXTERN_C();
-
-
-/** Update a MD5 digest with given data.
- @see rtl_digest_update()
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_updateMD5 (
- rtlDigest Digest,
- const void *pData, sal_uInt32 nDatLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Finalize a MD5 digest and retrieve the digest value.
- @see rtl_digest_get()
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_getMD5 (
- rtlDigest Digest,
- sal_uInt8 *pBuffer, sal_uInt32 nBufLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Retrieve the raw (not finalized) MD5 digest value.
-
- This function is a non-standard replacement for
- rtl_digest_getMD5() and must be used with caution.
-
- @post Digest initialized to accept another update sequence.
- @see rtl_digest_get()
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_rawMD5 (
- rtlDigest Digest,
- sal_uInt8 *pBuffer, sal_uInt32 nBufLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Evaluate a MD5 digest value from given data.
-
- This function performs an optimized call sequence on a
- single data buffer, avoiding digest creation and destruction.
-
- @see rtl_digest_updateMD5()
- @see rtl_digest_getMD5()
-
- @param pData [in] data buffer.
- @param nDatLen [in] data length.
- @param pBuffer [in] digest value buffer.
- @param nBufLen [in] digest value length.
-
- @return rtl_Digest_E_None upon success.
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_MD5 (
- const void *pData, sal_uInt32 nDatLen,
- sal_uInt8 *pBuffer, sal_uInt32 nBufLen
-) SAL_THROW_EXTERN_C();
-
-/*========================================================================
- *
- * rtl_digest_SHA interface.
- *
- *======================================================================*/
-#define RTL_DIGEST_LENGTH_SHA 20
-
-/** Create a SHA digest handle.
-
- The SHA digest algorithm is specified in
- FIPS PUB 180 (Superseded by FIPS PUB 180-1)
- Secure Hash Standard
-
- @see rtl_digest_create()
- */
-SAL_DLLPUBLIC rtlDigest SAL_CALL rtl_digest_createSHA (void) SAL_THROW_EXTERN_C();
-
-
-/** Destroy a SHA digest handle.
- @see rtl_digest_destroy()
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_digest_destroySHA (
- rtlDigest Digest
-) SAL_THROW_EXTERN_C();
-
-
-/** Update a SHA digest with given data.
- @see rtl_digest_update()
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_updateSHA (
- rtlDigest Digest,
- const void *pData, sal_uInt32 nDatLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Finalize a SHA digest and retrieve the digest value.
- @see rtl_digest_get()
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_getSHA (
- rtlDigest Digest,
- sal_uInt8 *pBuffer, sal_uInt32 nBufLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Evaluate a SHA digest value from given data.
-
- This function performs an optimized call sequence on a
- single data buffer, avoiding digest creation and destruction.
-
- @see rtl_digest_updateSHA()
- @see rtl_digest_getSHA()
-
- @param pData [in] data buffer.
- @param nDatLen [in] data length.
- @param pBuffer [in] digest value buffer.
- @param nBufLen [in] digest value length.
-
- @return rtl_Digest_E_None upon success.
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_SHA (
- const void *pData, sal_uInt32 nDatLen,
- sal_uInt8 *pBuffer, sal_uInt32 nBufLen
-) SAL_THROW_EXTERN_C();
-
-/*========================================================================
- *
- * rtl_digest_SHA1 interface.
- *
- *======================================================================*/
-#define RTL_DIGEST_LENGTH_SHA1 20
-
-/** Create a SHA1 digest handle.
-
- The SHA1 digest algorithm is specified in
- FIPS PUB 180-1 (Supersedes FIPS PUB 180)
- Secure Hash Standard
-
- @see rtl_digest_create()
- */
-SAL_DLLPUBLIC rtlDigest SAL_CALL rtl_digest_createSHA1 (void) SAL_THROW_EXTERN_C();
-
-
-/** Destroy a SHA1 digest handle.
- @see rtl_digest_destroy()
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_digest_destroySHA1 (
- rtlDigest Digest
-) SAL_THROW_EXTERN_C();
-
-
-/** Update a SHA1 digest with given data.
- @see rtl_digest_update()
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_updateSHA1 (
- rtlDigest Digest,
- const void *pData, sal_uInt32 nDatLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Finalize a SHA1 digest and retrieve the digest value.
- @see rtl_digest_get()
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_getSHA1 (
- rtlDigest Digest,
- sal_uInt8 *pBuffer, sal_uInt32 nBufLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Evaluate a SHA1 digest value from given data.
-
- This function performs an optimized call sequence on a
- single data buffer, avoiding digest creation and destruction.
-
- @see rtl_digest_updateSHA1()
- @see rtl_digest_getSHA1()
-
- @param pData [in] data buffer.
- @param nDatLen [in] data length.
- @param pBuffer [in] digest value buffer.
- @param nBufLen [in] digest value length.
-
- @return rtl_Digest_E_None upon success.
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_SHA1 (
- const void *pData, sal_uInt32 nDatLen,
- sal_uInt8 *pBuffer, sal_uInt32 nBufLen
-) SAL_THROW_EXTERN_C();
-
-/*========================================================================
- *
- * rtl_digest_HMAC_MD5 interface.
- *
- *======================================================================*/
-#define RTL_DIGEST_LENGTH_HMAC_MD5 RTL_DIGEST_LENGTH_MD5
-
-/** Create a HMAC_MD5 digest handle.
-
- The HMAC_MD5 digest algorithm is specified in
-
- RFC 2104 (Informational)
- HMAC: Keyed-Hashing for Message Authentication
-
- @see rtl_digest_create()
- */
-SAL_DLLPUBLIC rtlDigest SAL_CALL rtl_digest_createHMAC_MD5 (void) SAL_THROW_EXTERN_C();
-
-
-/** Destroy a HMAC_MD5 digest handle.
- @see rtl_digest_destroy()
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_digest_destroyHMAC_MD5 (
- rtlDigest Digest
-) SAL_THROW_EXTERN_C();
-
-
-/** Initialize a HMAC_MD5 digest.
- @see rtl_digest_init()
-
- @param Digest [in] digest handle.
- @param pKeyData [in] key material buffer.
- @param nKeyLen [in] key material length.
-
- @return rtl_Digest_E_None upon success.
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_initHMAC_MD5 (
- rtlDigest Digest,
- const sal_uInt8 *pKeyData, sal_uInt32 nKeyLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Update a HMAC_MD5 digest with given data.
- @see rtl_digest_update()
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_updateHMAC_MD5 (
- rtlDigest Digest,
- const void *pData, sal_uInt32 nDatLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Finalize a HMAC_MD5 digest and retrieve the digest value.
- @see rtl_digest_get()
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_getHMAC_MD5 (
- rtlDigest Digest,
- sal_uInt8 *pBuffer, sal_uInt32 nBufLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Evaluate a HMAC_MD5 digest value from given data.
-
- This function performs an optimized call sequence on a
- single data buffer, avoiding digest creation and destruction.
-
- @see rtl_digest_initHMAC_MD5()
- @see rtl_digest_updateHMAC_MD5()
- @see rtl_digest_getHMAC_MD5()
-
- @param pKeyData [in] key material buffer.
- @param nKeyLen [in] key material length.
- @param pData [in] data buffer.
- @param nDatLen [in] data length.
- @param pBuffer [in] digest value buffer.
- @param nBufLen [in] digest value length.
-
- @return rtl_Digest_E_None upon success.
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_HMAC_MD5 (
- const sal_uInt8 *pKeyData, sal_uInt32 nKeyLen,
- const void *pData, sal_uInt32 nDatLen,
- sal_uInt8 *pBuffer, sal_uInt32 nBufLen
-) SAL_THROW_EXTERN_C();
-
-/*========================================================================
- *
- * rtl_digest_HMAC_SHA1 interface.
- *
- *======================================================================*/
-#define RTL_DIGEST_LENGTH_HMAC_SHA1 RTL_DIGEST_LENGTH_SHA1
-
-/** Create a HMAC_SHA1 digest handle.
-
- The HMAC_SHA1 digest algorithm is specified in
- RFC 2104 (Informational)
- HMAC: Keyed-Hashing for Message Authentication
- RFC 2898 (Informational)
- PKCS #5: Password-Based Cryptography Specification Version 2.0
-
- @see rtl_digest_create()
- */
-SAL_DLLPUBLIC rtlDigest SAL_CALL rtl_digest_createHMAC_SHA1 (void) SAL_THROW_EXTERN_C();
-
-
-/** Destroy a HMAC_SHA1 digest handle.
- @see rtl_digest_destroy()
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_digest_destroyHMAC_SHA1 (
- rtlDigest Digest
-) SAL_THROW_EXTERN_C();
-
-
-/** Initialize a HMAC_SHA1 digest.
- @see rtl_digest_init()
-
- @param Digest [in] digest handle.
- @param pKeyData [in] key material buffer.
- @param nKeyLen [in] key material length.
-
- @return rtl_Digest_E_None upon success.
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_initHMAC_SHA1 (
- rtlDigest Digest,
- const sal_uInt8 *pKeyData, sal_uInt32 nKeyLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Update a HMAC_SHA1 digest with given data.
- @see rtl_digest_update()
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_updateHMAC_SHA1 (
- rtlDigest Digest,
- const void *pData, sal_uInt32 nDatLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Finalize a HMAC_SHA1 digest and retrieve the digest value.
- @see rtl_digest_get()
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_getHMAC_SHA1 (
- rtlDigest Digest,
- sal_uInt8 *pBuffer, sal_uInt32 nBufLen
-) SAL_THROW_EXTERN_C();
-
-
-/** Evaluate a HMAC_SHA1 digest value from given data.
-
- This function performs an optimized call sequence on a
- single data buffer, avoiding digest creation and destruction.
-
- @see rtl_digest_initHMAC_SHA1()
- @see rtl_digest_updateHMAC_SHA1()
- @see rtl_digest_getHMAC_SHA1()
-
- @param pKeyData [in] key material buffer.
- @param nKeyLen [in] key material length.
- @param pData [in] data buffer.
- @param nDatLen [in] data length.
- @param pBuffer [in] digest value buffer.
- @param nBufLen [in] digest value length.
-
- @return rtl_Digest_E_None upon success.
- */
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_HMAC_SHA1 (
- const sal_uInt8 *pKeyData, sal_uInt32 nKeyLen,
- const void *pData, sal_uInt32 nDatLen,
- sal_uInt8 *pBuffer, sal_uInt32 nBufLen
-) SAL_THROW_EXTERN_C();
-
-/*========================================================================
- *
- * rtl_digest_PBKDF2 interface.
- *
- *======================================================================*/
-/** Password-Based Key Derivation Function.
-
- The PBKDF2 key derivation function is specified in
- RFC 2898 (Informational)
- PKCS #5: Password-Based Cryptography Specification Version 2.0
-
- @param pKeyData [out] derived key
- @param nKeyLen [in] derived key length
- @param pPassData [in] password
- @param nPassLen [in] password length
- @param pSaltData [in] salt
- @param nSaltLen [in] salt length
- @param nCount [in] iteration count
-
- @return rtl_Digest_E_None upon success.
-*/
-SAL_DLLPUBLIC rtlDigestError SAL_CALL rtl_digest_PBKDF2 (
- sal_uInt8 *pKeyData , sal_uInt32 nKeyLen,
- const sal_uInt8 *pPassData, sal_uInt32 nPassLen,
- const sal_uInt8 *pSaltData, sal_uInt32 nSaltLen,
- sal_uInt32 nCount
-) SAL_THROW_EXTERN_C();
-
-/*========================================================================
- *
- * The End.
- *
- *======================================================================*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTL_DIGEST_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/instance.hxx b/sal/inc/rtl/instance.hxx
deleted file mode 100644
index 1efda808abec..000000000000
--- a/sal/inc/rtl/instance.hxx
+++ /dev/null
@@ -1,637 +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_INSTANCE_HXX
-#define INCLUDED_RTL_INSTANCE_HXX
-
-#include "sal/config.h"
-
-#include "osl/doublecheckedlocking.h"
-#include "osl/getglobalmutex.hxx"
-
-namespace {
-
-/** A non-broken version of the double-checked locking pattern.
-
- See
- <http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html>
- for a description of double-checked locking, why it is broken, and how it
- can be fixed. Always use this template instead of spelling out the
- double-checked locking pattern explicitly, and only in those rare cases
- where that is not possible and you have to spell it out explicitly, at
- least call OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER() at the right
- places. That way, all platform-dependent code to make double-checked
- locking work can be kept in one place.
-
- Usage scenarios:
-
- 1 Static instance (most common case)
-
- Pattern:
-
- T * getInstance()
- {
- static T * pInstance = 0;
- if (!pInstance)
- {
- ::osl::MutexGuard aGuard(::osl::Mutex::getGlobalMutex());
- if (!pInstance)
- {
- static T aInstance;
- pInstance = &aInstance;
- }
- }
- return pInstance;
- }
-
- Code:
-
- #include "rtl/instance.hxx"
- #include "osl/getglobalmutex.hxx"
-
- namespace {
- struct Init
- {
- T * operator()()
- {
- static T aInstance;
- return &aInstance;
- }
- };
- }
-
- T * getInstance()
- {
- return rtl_Instance< T, Init, ::osl::MutexGuard,
- ::osl::GetGlobalMutex >::create(
- Init(), ::osl::GetGlobalMutex());
- }
-
- 2 Dynamic instance
-
- Pattern:
-
- T * getInstance()
- {
- static T * pInstance = 0;
- if (!pInstance)
- {
- ::osl::MutexGuard aGuard(::osl::Mutex::getGlobalMutex());
- if (!pInstance)
- pInstance = new T;
- }
- return pInstance;
- }
-
- Code:
-
- #include "rtl/instance.hxx"
- #include "osl/getglobalmutex.hxx"
-
- namespace {
- struct Init
- {
- T * operator()()
- {
- return new T;
- }
- };
- }
-
- T * getInstance()
- {
- return rtl_Instance< T, Init, ::osl::MutexGuard,
- ::osl::GetGlobalMutex >::create(
- Init(), ::osl::GetGlobalMutex());
- }
-
- 3 Other guard/mutex
-
- Pattern:
-
- T * getInstance()
- {
- static T * pInstance = 0;
- if (!pInstance)
- {
- SomeGuard aGuard(pSomeMutex);
- if (!pInstance)
- {
- static T aInstance;
- pInstance = &aInstance;
- }
- }
- return pInstance;
- }
-
- Code:
-
- #include "rtl/instance.hxx"
-
- namespace {
- struct InitInstance
- {
- T * operator()()
- {
- static T aInstance;
- return &aInstance;
- }
- };
-
- struct InitGuard
- {
- SomeMutex * operator()()
- {
- return pSomeMutex;
- }
- };
- }
-
- T * getInstance()
- {
- return rtl_Instance< T, InitInstance,
- SomeGuard, InitGuard >::create(
- InitInstance(), InitMutex());
- }
-
- 4 Calculate extra data
-
- Pattern:
-
- T * getInstance()
- {
- static T * pInstance = 0;
- if (!pInstance)
- {
- Data aData(...);
- ::osl::MutexGuard aGuard(::osl::Mutex::getGlobalMutex());
- if (!pInstance)
- {
- static T aInstance(aData);
- pInstance = &aInstance;
- }
- }
- return pInstance;
- }
-
- Code:
-
- #include "rtl/instance.hxx"
- #include "osl/getglobalmutex.hxx"
-
- namespace {
- struct InitInstance
- {
- T * operator()()
- {
- static T aInstance;
- return &aInstance;
- }
- }
-
- struct InitData
- {
- Data const & operator()()
- {
- return ...;
- }
- }
- }
-
- T * getInstance()
- {
- return rtl_Instance< T, InitInstance,
- ::osl::Mutex, ::osl::GetGlobalMutex,
- Data, InitData >::create(
- InitInstance(), ::osl::GetGlobalMutex(), InitData());
- }
-
- Some comments:
-
- For any instantiation of rtl_Instance, at most one call to a create method
- may occur in the program code: Each occurrence of a create method within
- the program code is supposed to return a fresh object instance on the
- first call, and that same object instance on subsequent calls; but
- independent occurrences of create methods are supposed to return
- independent object instances. Since there is a one-to-one correspondence
- between object instances and instantiations of rtl_Instance, the
- requirement should be clear. One measure to enforce the requirement is
- that rtl_Instance lives in an unnamed namespace, so that instantiations of
- rtl_Instance in different translation units will definitely be different
- instantiations. A drawback of that measure is that the name of the class
- needs a funny "hand coded" prefix "rtl_" instead of a proper namespace
- prefix like "::rtl::".
-
- A known problem with this template is when two occurrences of calls to
- create methods with identical template arguments appear in one translation
- unit. Those two places will share a single object instance. This can be
- avoided by using different Init structs (see the above code samples) in
- the two places.
-
- There is no need to make m_pInstance volatile, in order to avoid usage of
- stale copies of m_pInstance: At the first check, a thread will see that
- m_pInstance contains either 0 or a valid pointer. If it contains a valid
- pointer, it cannot be stale, and that pointer is used. If it contains 0,
- acquiring the mutex will ensure that the second check sees a non-stale
- value in all cases.
-
- On some compilers, the create methods would not be inlined if they
- contained any static variables, so m_pInstance is made a class member
- instead (and the create methods are inlined). But on MSC, the definition
- of the class member m_pInstance would cause compilation to fail with an
- internal compiler error. Since MSC is able to inline methods containing
- static variables, m_pInstance is moved into the methods there. Note that
- this only works well because for any instantiation of rtl_Instance at most
- one call to a create method should be present, anyway.
- */
-template< typename Inst, typename InstCtor,
- typename Guard, typename GuardCtor,
- typename Data = int, typename DataCtor = int >
-class rtl_Instance
-{
-public:
- static inline Inst * create(InstCtor aInstCtor, GuardCtor aGuardCtor)
- {
-#if defined _MSC_VER
- static Inst * m_pInstance = 0;
-#endif // _MSC_VER
- Inst * p = m_pInstance;
- if (!p)
- {
- Guard aGuard(aGuardCtor());
- p = m_pInstance;
- if (!p)
- {
- p = aInstCtor();
- OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
- m_pInstance = p;
- }
- }
- else
- {
- OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
- }
- return p;
- }
-
- static inline Inst * create(InstCtor aInstCtor, GuardCtor aGuardCtor,
- DataCtor aDataCtor)
- {
-#if defined _MSC_VER
- static Inst * m_pInstance = 0;
-#endif // _MSC_VER
- Inst * p = m_pInstance;
- if (!p)
- {
- Data aData(aDataCtor());
- Guard aGuard(aGuardCtor());
- p = m_pInstance;
- if (!p)
- {
- p = aInstCtor(aData);
- OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
- m_pInstance = p;
- }
- }
- else
- {
- OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
- }
- return p;
- }
-
- static inline Inst * create(InstCtor aInstCtor, GuardCtor aGuardCtor,
- const Data &rData)
- {
-#if defined _MSC_VER
- static Inst * m_pInstance = 0;
-#endif // _MSC_VER
- Inst * p = m_pInstance;
- if (!p)
- {
- Guard aGuard(aGuardCtor());
- p = m_pInstance;
- if (!p)
- {
- p = aInstCtor(rData);
- OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
- m_pInstance = p;
- }
- }
- else
- {
- OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
- }
- return p;
- }
-
-private:
-#if !defined _MSC_VER
- static Inst * m_pInstance;
-#endif // _MSC_VER
-};
-
-#if !defined _MSC_VER
-template< typename Inst, typename InstCtor,
- typename Guard, typename GuardCtor,
- typename Data, typename DataCtor >
-Inst *
-rtl_Instance< Inst, InstCtor, Guard, GuardCtor, Data, DataCtor >::m_pInstance
-= 0;
-#endif // _MSC_VER
-
-}
-
-namespace rtl {
-
-/** Helper base class for a late-initialized (default-constructed)
- static variable, implementing the double-checked locking pattern correctly.
-
- @derive
- Derive from this class (common practice), e.g.
- <pre>
- struct MyStatic : public rtl::Static<MyType, MyStatic> {};
- ...
- MyType & rStatic = MyStatic::get();
- ...
- </pre>
-
- @tparam T
- variable's type
- @tparam Unique
- Implementation trick to make the inner static holder unique,
- using the outer class
- (the one that derives from this base class)
-*/
-#if HAVE_THREADSAFE_STATICS
-template<typename T, typename Unique>
-class Static {
-public:
- /** Gets the static. Mutual exclusion is implied by a functional
- -fthreadsafe-statics
-
- @return
- static variable
- */
- static T & get() {
- static T instance;
- return instance;
- }
-};
-#else
-template<typename T, typename Unique>
-class Static {
-public:
- /** Gets the static. Mutual exclusion is performed using the
- osl global mutex.
-
- @return
- static variable
- */
- static T & get() {
- return *rtl_Instance<
- T, StaticInstance,
- ::osl::MutexGuard, ::osl::GetGlobalMutex >::create(
- StaticInstance(), ::osl::GetGlobalMutex() );
- }
-private:
- struct StaticInstance {
- T * operator () () {
- static T instance;
- return &instance;
- }
- };
-};
-#endif
-
-/** Helper base class for a late-initialized (default-constructed)
- static variable, implementing the double-checked locking pattern correctly.
-
- @derive
- Derive from this class (common practice), e.g.
- <pre>
- struct MyStatic : public rtl::Static<MyType, MyStatic> {};
- ...
- MyType & rStatic = MyStatic::get();
- ...
- </pre>
-
- @tparam T
- variable's type
- @tparam Unique
- Implementation trick to make the inner static holder unique,
- using the outer class
- (the one that derives from this base class)
-*/
-#if HAVE_THREADSAFE_STATICS
-template<typename T, typename Data, typename Unique>
-class StaticWithArg {
-public:
- /** Gets the static. Mutual exclusion is implied by a functional
- -fthreadsafe-statics
-
- @return
- static variable
- */
- static T & get(const Data& rData) {
- static T instance(rData);
- return instance;
- }
-
- /** Gets the static. Mutual exclusion is implied by a functional
- -fthreadsafe-statics
-
- @return
- static variable
- */
- static T & get(Data& rData) {
- static T instance(rData);
- return instance;
- }
-};
-#else
-template<typename T, typename Data, typename Unique>
-class StaticWithArg {
-public:
- /** Gets the static. Mutual exclusion is performed using the
- osl global mutex.
-
- @return
- static variable
- */
- static T & get(const Data& rData) {
- return *rtl_Instance<
- T, StaticInstanceWithArg,
- ::osl::MutexGuard, ::osl::GetGlobalMutex,
- Data >::create( StaticInstanceWithArg(),
- ::osl::GetGlobalMutex(),
- rData );
- }
-
- /** Gets the static. Mutual exclusion is performed using the
- osl global mutex.
-
- @return
- static variable
- */
- static T & get(Data& rData) {
- return *rtl_Instance<
- T, StaticInstanceWithArg,
- ::osl::MutexGuard, ::osl::GetGlobalMutex,
- Data >::create( StaticInstanceWithArg(),
- ::osl::GetGlobalMutex(),
- rData );
- }
-private:
- struct StaticInstanceWithArg {
- T * operator () (const Data& rData) {
- static T instance(rData);
- return &instance;
- }
-
- T * operator () (Data& rData) {
- static T instance(rData);
- return &instance;
- }
- };
-};
-#endif
-
-/** Helper class for a late-initialized static aggregate, e.g. an array,
- implementing the double-checked locking pattern correctly.
-
- @tparam T
- aggregate's element type
- @tparam InitAggregate
- initializer functor class
-*/
-#if HAVE_THREADSAFE_STATICS
-template<typename T, typename InitAggregate>
-class StaticAggregate {
-public:
- /** Gets the static aggregate, late-initializing.
- Mutual exclusion is implied by a functional
- -fthreadsafe-statics
-
- @return
- aggregate
- */
- static T * get() {
- static T *instance = InitAggregate()();
- return instance;
- }
-};
-#else
-template<typename T, typename InitAggregate>
-class StaticAggregate {
-public:
- /** Gets the static aggregate, late-initializing.
- Mutual exclusion is performed using the osl global mutex.
-
- @return
- aggregate
- */
- static T * get() {
- return rtl_Instance<
- T, InitAggregate,
- ::osl::MutexGuard, ::osl::GetGlobalMutex >::create(
- InitAggregate(), ::osl::GetGlobalMutex() );
- }
-};
-#endif
-/** Helper base class for a late-initialized static variable,
- implementing the double-checked locking pattern correctly.
-
- @derive
- Derive from this class (common practice),
- providing an initializer functor class, e.g.
- <pre>
- struct MyStatic : public rtl::StaticWithInit<MyType, MyStatic> {
- MyType operator () () {
- ...
- return MyType( ... );
- }
- };
- ...
- MyType & rStatic = MyStatic::get();
- ...
- </pre>
-
- @tparam T
- variable's type
- @tparam InitData
- initializer functor class
- @tparam Unique
- Implementation trick to make the inner static holder unique,
- using the outer class
- (the one that derives from this base class).
- Default is InitData (common practice).
- @tparam Data
- Initializer functor's return type.
- Default is T (common practice).
-*/
-#if HAVE_THREADSAFE_STATICS
-template<typename T, typename InitData,
- typename Unique = InitData, typename Data = T>
-class StaticWithInit {
-public:
- /** Gets the static. Mutual exclusion is implied by a functional
- -fthreadsafe-statics
-
- @return
- static variable
- */
- static T & get() {
- static T instance = InitData()();
- return instance;
- }
-};
-#else
-template<typename T, typename InitData,
- typename Unique = InitData, typename Data = T>
-class StaticWithInit {
-public:
- /** Gets the static. Mutual exclusion is performed using the
- osl global mutex.
-
- @return
- static variable
- */
- static T & get() {
- return *rtl_Instance<
- T, StaticInstanceWithInit,
- ::osl::MutexGuard, ::osl::GetGlobalMutex,
- Data, InitData >::create( StaticInstanceWithInit(),
- ::osl::GetGlobalMutex(),
- InitData() );
- }
-private:
- struct StaticInstanceWithInit {
- T * operator () ( Data d ) {
- static T instance(d);
- return &instance;
- }
- };
-};
-#endif
-} // namespace rtl
-
-#endif // INCLUDED_RTL_INSTANCE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/locale.h b/sal/inc/rtl/locale.h
deleted file mode 100644
index 197a9152284d..000000000000
--- a/sal/inc/rtl/locale.h
+++ /dev/null
@@ -1,136 +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 _RTL_LOCALE_H_
-#define _RTL_LOCALE_H_
-
-#include "sal/config.h"
-
-#include "rtl/ustring.h"
-#include "sal/saldllapi.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef SAL_W32
-# pragma pack(push, 8)
-#endif
-
-/**
- The implementation structur of a locale. Do not create this structure
- direct. Only use the functions rtl_locale_register and
- rtl_locale_setDefault. The strings Language, Country and Variant
- are constants, so it is not necessary to acquire and release them.
- */
-typedef struct _rtl_Locale
-{
- /**
- Lowercase two-letter ISO 639-1 or three-letter ISO 639-3 code.
- */
- rtl_uString * Language;
- /**
- uppercase two-letter ISO-3166 code.
- */
- rtl_uString * Country;
- /**
- Lowercase vendor and browser specific code.
- */
- rtl_uString * Variant;
- /**
- The merged hash value of the Language, Country and Variant strings.
- */
- sal_Int32 HashCode;
-} rtl_Locale;
-
-#if defined( SAL_W32)
-#pragma pack(pop)
-#endif
-
-/**
- Register a locale from language, country and variant.
- @param language lowercase two-letter ISO 639-1 or three-letter ISO 639-3 code.
- @param country uppercase two-letter ISO-3166 code. May be null.
- @param variant vendor and browser specific code. May be null.
- */
-SAL_DLLPUBLIC rtl_Locale * SAL_CALL rtl_locale_register(
- const sal_Unicode * language, const sal_Unicode * country, const sal_Unicode * variant );
-
-/**
- Common method of getting the current default Locale.
- Used for the presentation: menus, dialogs, etc.
- Generally set once when your applet or application is initialized,
- then never reset. (If you do reset the default locale, you
- probably want to reload your GUI, so that the change is reflected
- in your interface.)
- <p>More advanced programs will allow users to use different locales
- for different fields, e.g. in a spreadsheet.
- <BR>Note that the initial setting will match the host system.
- */
-SAL_DLLPUBLIC rtl_Locale * SAL_CALL rtl_locale_getDefault();
-
-/**
- Sets the default.
- Normally set once at the beginning of applet or application,
- then never reset. <code>setDefault</code> does not reset the host locale.
- @param language lowercase two-letter ISO 639-1 or three-letter ISO 639-3 code.
- @param country uppercase two-letter ISO-3166 code.
- @param variant vendor and browser specific code. See class description.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_locale_setDefault(
- const sal_Unicode * language, const sal_Unicode * country, const sal_Unicode * variant );
-
-/**
- Getter for programmatic name of field,
- a lowercased two-letter ISO 639-1 or three-letter ISO 639-3 code.
- @see getDisplayLanguage
- */
-SAL_DLLPUBLIC rtl_uString * SAL_CALL rtl_locale_getLanguage( rtl_Locale * This );
-
-/**
- Getter for programmatic name of field,
- an uppercased two-letter ISO-3166 code.
- @see getDisplayCountry
- */
-SAL_DLLPUBLIC rtl_uString * SAL_CALL rtl_locale_getCountry( rtl_Locale * This );
-
-/**
- Getter for programmatic name of field.
- @see getDisplayVariant
- */
-SAL_DLLPUBLIC rtl_uString * SAL_CALL rtl_locale_getVariant( rtl_Locale * This );
-
-/**
- Returns the hash code of the locale This.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_locale_hashCode( rtl_Locale * This );
-
-/**
- Returns true if the locals are equal, otherwis false.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_locale_equals( rtl_Locale * This, rtl_Locale * obj );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTL_LOCALE_H_ */
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/logfile.h b/sal/inc/rtl/logfile.h
deleted file mode 100644
index c14c5c118abd..000000000000
--- a/sal/inc/rtl/logfile.h
+++ /dev/null
@@ -1,131 +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 _RTL_LOGFILE_H_
-#define _RTL_LOGFILE_H_
-
-#include "sal/config.h"
-
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/** This function allows to log arbitrary messages even in a product-environment.
-
- The logfile is created on first access and closed, when the sal-library gets unloaded.
- The file is line buffered. A log file is not created if no log messages are
- written.
-
- The first time, rtl_logfile_trace is called, it checks for the bootstrap variable
- RTL_LOGFILE. If the variable is not empty, it creates a file with the name
- $(RTL_LOGFILE)_$(PID).log, where $(PID) is the process id of the running process.
-
- @param pszFormat A format string with fprintf-syntax
- @param ... An arbitrary number of arguments for fprintf, matching the
- format string.
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_logfile_trace( const sal_Char* pszFormat, ... );
-
-/** Like rtl_logfile_trace, but prefixing every log entry with the current time
- and thread ID.
-
- @param format
- a format string with fprintf-like syntax
-
- @param ...
- an arbitrary number of arguments for fprintf, matching the given format
- string
-
- @since UDK 3.2.0
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_logfile_longTrace(char const * format, ...);
-
-/** Return if a log file is written.
-
- @return true if a log file is written
-
- @since UDK 3.2.11
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL rtl_logfile_hasLogFile( void );
-
-#ifdef __cplusplus
-}
-#endif
-
-#ifdef TIMELOG
-#define RTL_LOGFILE_TRACE( string ) \
- rtl_logfile_longTrace( "| : %s\n", string )
-#define RTL_LOGFILE_TRACE1( frmt, arg1 ) \
- rtl_logfile_longTrace( "| : " ); \
- rtl_logfile_trace( frmt, arg1 ); \
- rtl_logfile_trace( "\n" )
-
-#define RTL_LOGFILE_TRACE2( frmt, arg1 , arg2 ) \
- rtl_logfile_longTrace( "| : " ); \
- rtl_logfile_trace( frmt, arg1 , arg2 ); \
- rtl_logfile_trace( "\n" )
-#define RTL_LOGFILE_TRACE3( frmt, arg1 , arg2 , arg3 ) \
- rtl_logfile_longTrace( "| : " ); \
- rtl_logfile_trace( frmt, arg1 , arg2 , arg3 ); \
- rtl_logfile_trace( "\n" )
-
-// Now the macros with project and author arguments. The strings
-// are formatted in a way, so that the log file can be parsed by
-// post processing scripts.
-#define RTL_LOGFILE_TRACE_AUTHOR( project, author, string ) \
- rtl_logfile_longTrace( "| %s (%s) : %s\n", \
- project,\
- author,\
- string )
-#define RTL_LOGFILE_TRACE_AUTHOR1( project, author, frmt, arg1 ) \
- rtl_logfile_longTrace( "| %s (%s) : ", \
- project,\
- author );\
- rtl_logfile_trace( frmt, arg1 ); \
- rtl_logfile_trace( "\n" )
-
-#define RTL_LOGFILE_TRACE_AUTHOR2( project, author, frmt, arg1 , arg2 ) \
- rtl_logfile_longTrace( "| %s (%s) : ", \
- project,\
- author ); \
- rtl_logfile_trace( frmt, arg1 , arg2 ); \
- rtl_logfile_trace( "\n" )
-#define RTL_LOGFILE_TRACE_AUTHOR3( project, author, frmt, arg1 , arg2 , arg3 ) \
- rtl_logfile_longTrace( "| %s (%s) : ", \
- project,\
- author ); \
- rtl_logfile_trace( frmt, arg1 , arg2 , arg3 ); \
- rtl_logfile_trace( "\n" )
-#else
-#define RTL_LOGFILE_TRACE( string ) ((void)0)
-#define RTL_LOGFILE_TRACE1( frmt, arg1 ) ((void)0)
-#define RTL_LOGFILE_TRACE2( frmt, arg1 , arg2 ) ((void)0)
-#define RTL_LOGFILE_TRACE3( frmt, arg1 , arg2 , arg3 ) ((void)0)
-
-#define RTL_LOGFILE_TRACE_AUTHOR( project, author, string ) ((void)0)
-#define RTL_LOGFILE_TRACE_AUTHOR1( project, author, frmt, arg1 ) ((void)0)
-#define RTL_LOGFILE_TRACE_AUTHOR2( project, author, frmt, arg1 , arg2 ) ((void)0)
-#define RTL_LOGFILE_TRACE_AUTHOR3( project, author, frmt, arg1 , arg2 , arg3 ) ((void)0)
-#endif // TIMELOG
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/logfile.hxx b/sal/inc/rtl/logfile.hxx
deleted file mode 100644
index d911f5664f92..000000000000
--- a/sal/inc/rtl/logfile.hxx
+++ /dev/null
@@ -1,205 +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 _RTL_LOGFILE_HXX_
-#define _RTL_LOGFILE_HXX_
-
-#include <rtl/logfile.h>
-#include <rtl/string.hxx>
-#include <sal/detail/log.h>
-
-namespace rtl
-{
-/**
-@brief The intended use for class Logfile is to write time stamp information
- for profiling purposes.
-
- Profiling output should only be generated for a special product version of OpenOffice
- which is compiled with a defined preprocessor symbol 'TIMELOG'.
- Therefore we have provided a set of macros that uses the class Logfile only if
- this symbol is defined. If the macros are not sufficient, i.e. you need more
- then three arguments for a printf style message, then you have to insert an
- \#ifdef TIMELOG/\#endif brace yourself.
-
- Additionally the environment variable RTL_LOGFILE has to be defined in order to generate
- logging information. If the variable is not empty, it creates a file with the name
- $(RTL_LOGFILE)_$(PID).log, where $(PID) is the process id of the running process.
- It can be used as a run time switch for enabling or disabling the logging.
- Note that this variable is evaluated only once at the first attempt to write a message.
-
- The class LogFile collects runtime data within its constructor and destructor. It can be
- used for timing whole functions.
- If you want to write timing data without context you can use the RTL_LOGFILE_TRACE-macros
- which are defined inside <rtl/logfile.h>.
-
- The class LogFile should not be used directly, instead use the RTL_LOGFILE_CONTEXT/
- RTL_LOGFILE_TRACE-macros.
-
- Macro usage:
- ------------
- RTL_LOGFILE_CONTEXT( instance, name );
- This macro creates an instance of class LogFile with the name "instance" and writes the current time,
- thread id and "name" to the log file.
-
- Example: RTL_LOGFILE_CONTEXT( aLog, "Timing for foo-method" );
-
- RTL_LOGFILE_CONTEXT_TRACE( instance, message );
- RTL_LOGFILE_CONTEXT_TRACEn( instance, frmt, arg1, .., arg3 );
- These macros can be used to log information in a "instance" context. The "instance" object
- is used to log message information. All macros with "frmt" uses printf notation to log timing infos.
-
- Example: RTL_LOGFILE_CONTEXT_TRACE( aLog, "Now we call an expensive function" );
- RTL_LOGFIlE_CONTEXT_TRACE1( aLog, "Config entries read: %u", (unsigned short)i );
-
- RTL_LOGFILE_TRACE( string );
- RTL_LOGFILE_TRACEn( frmt, arg1, .., arg3 );
- These macros can be used to log information outside a context. The macro directly calls
- rtl_logfile_trace to write the info to the log file. All macros with "frmt" uses printf
- notation to log timing infos.
-
- Example: RTL_LOGFILE_TRACE( "Timing for loading a file" );
- RTL_LOGFILE_TRACE1( aLog, "Timing for loading file: %s", aFileName );
-
- The lines written to the log file consist of the following space separated elements:
- 1. The time relative to the start of the global timer in milliseconds. The times is
- started typically for the first logged line.
- 2. Thread id. It's absolut value is probably of less interest than providing a way to
- distinguish different threads.
- 3. a. An opening or closing curly brace indicating the start or end of a scope.
- 4a. Function name or general scope identifier.
- b. A vertical line indicating an arbitrary message.
- 4b optional function name or general scope identifier.
- 5b A colon followed by a space and a free form message terminated by a newline.
-
- There is a second version of creating a context. RTL_LOGFILE_CONTEXT_AUTHOR takes
- two more arguments, the name of the project and the author's sign who is responsible
- for the code in which the macro is used.
-*/
- class Logfile
- {
- public:
- inline Logfile( const sal_Char *name );
- /** Create a log file context
-
- Create a log file context where the message field consists of a project
- name, the author's shortcut, and the actual message. These three strings
- are written in a format that is understood by script that later parses the
- log file and that so can extract the three strings.
- @param project Short name of the project, like sw for writer or sc for calc.
- @param author The sign of the person responsible for the code.
- @param name The actual message, typically a method name.
- */
- inline Logfile( const sal_Char *project, const sal_Char *author, const sal_Char *name );
- inline ~Logfile();
- inline const sal_Char *getName();
- private:
- ::rtl::OString m_sName;
- };
-
- inline Logfile::Logfile( const sal_Char *name )
- : m_sName( name )
- {
- rtl_logfile_longTrace( "{ %s\n", name );
- }
-
- inline Logfile::Logfile( const sal_Char *project, const sal_Char *author, const sal_Char *name )
- : m_sName( project)
- {
- m_sName += " (";
- m_sName += author;
- m_sName += ") ";
- m_sName += name;
- rtl_logfile_longTrace( "{ %s\n", m_sName.pData->buffer );
- }
-
- inline Logfile::~Logfile()
- {
- rtl_logfile_longTrace( "} %s\n", m_sName.pData->buffer );
- }
-
- inline const sal_Char * Logfile::getName()
- {
- return m_sName.getStr();
- }
-}
-
-#ifdef TIMELOG
-#define RTL_LOGFILE_CONTEXT( instance, name ) ::rtl::Logfile instance( name )
-#define RTL_LOGFILE_CONTEXT_AUTHOR( instance, project, author, name ) ::rtl::Logfile instance(project, author, name )
-#define RTL_LOGFILE_CONTEXT_TRACE( instance, message ) \
- rtl_logfile_longTrace( "| %s : %s\n", \
- instance.getName(), \
- message )
-#define RTL_LOGFILE_CONTEXT_TRACE1( instance , frmt, arg1 ) \
- rtl_logfile_longTrace( "| %s : ", \
- instance.getName() ); \
- rtl_logfile_trace( frmt , arg1 ); \
- rtl_logfile_trace( "\n" )
-#define RTL_LOGFILE_CONTEXT_TRACE2( instance , frmt, arg1 , arg2 ) \
- rtl_logfile_longTrace( "| %s : ", \
- instance.getName() ); \
- rtl_logfile_trace( frmt , arg1 , arg2 ); \
- rtl_logfile_trace( "\n" )
-#define RTL_LOGFILE_CONTEXT_TRACE3( instance , frmt, arg1 , arg2 , arg3 ) \
- rtl_logfile_longTrace( "| %s : ", \
- instance.getName() ); \
- rtl_logfile_trace( frmt , arg1 , arg2 , arg3 ); \
- rtl_logfile_trace( "\n" )
-
-#else
-
-#define RTL_LOGFILE_FORWARD_VIA_SAL_LOG(area, message) \
- SAL_DETAIL_INFO_IF_FORMAT(SAL_DETAIL_ENABLE_LOG_INFO, area, "%s", message)
-
-#define RTL_LOGFILE_CONTEXT( instance, name ) RTL_LOGFILE_FORWARD_VIA_SAL_LOG("logfile", name)
-#define RTL_LOGFILE_CONTEXT_AUTHOR( instance, project, author, name ) RTL_LOGFILE_FORWARD_VIA_SAL_LOG(project ".logfile", name)
-#define RTL_LOGFILE_CONTEXT_TRACE( instance, message ) RTL_LOGFILE_FORWARD_VIA_SAL_LOG("logfile", message)
-#define RTL_LOGFILE_CONTEXT_TRACE1( instance, frmt, arg1 ) ((void)arg1,(void)0)
-#define RTL_LOGFILE_CONTEXT_TRACE2( instance, frmt, arg1, arg2 ) ((void)arg1,(void)arg2,(void)0)
-#define RTL_LOGFILE_CONTEXT_TRACE3( instance, frmt, arg1, arg2 , arg3 ) ((void)arg1,(void)arg2,(void)arg3,(void)0)
-#endif
-
-// Normal RTL_LOGFILE_* entries will not make it into release versions,
-// TIMELOG is disabled a few versions prior relase build.
-//
-// We need some logs also in these builds, eg. for making performance regression tests.
-//
-// POLICY: Don't use RTL_LOGFILE_PRODUCT_* for your personal logging information.
-// Be aware that these logs make it into the product shipped to customers.
-// If you have good reasons for doing this, please contact product management.
-
-#define RTL_LOGFILE_PRODUCT_TRACE( string ) \
- rtl_logfile_longTrace( "| : %s\n", string )
-#define RTL_LOGFILE_PRODUCT_TRACE1( frmt, arg1 ) \
- rtl_logfile_longTrace( "| : " ); \
- rtl_logfile_trace( frmt, arg1 ); \
- rtl_logfile_trace( "\n" )
-#define RTL_LOGFILE_PRODUCT_CONTEXT( instance, name ) \
- ::rtl::Logfile instance( name )
-#define RTL_LOGFILE_PRODUCT_CONTEXT_TRACE1( instance, frmt, arg1 ) \
- rtl_logfile_longTrace( "| %s : ", \
- instance.getName() ); \
- rtl_logfile_trace( frmt, arg1 ); \
- rtl_logfile_trace( "\n" )
-#define RTL_LOGFILE_HASLOGFILE() \
- rtl_logfile_hasLogFile()
-
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/malformeduriexception.hxx b/sal/inc/rtl/malformeduriexception.hxx
deleted file mode 100644
index 24635ed26c2e..000000000000
--- a/sal/inc/rtl/malformeduriexception.hxx
+++ /dev/null
@@ -1,68 +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_MALFORMEDURIEXCEPTION_HXX
-#define INCLUDED_RTL_MALFORMEDURIEXCEPTION_HXX
-
-#include "rtl/ustring.hxx"
-
-namespace rtl {
-
-/** An exception indicating a malformed URI.
-
- <P>Used when parsing (part of) a URI fails for syntactical reasons.</P>
- */
-class SAL_EXCEPTION_DLLPUBLIC_EXPORT MalformedUriException
-{
-public:
- /** Create a MalformedUriException.
-
- @param rMessage
- A message containing any details about the exception.
- */
- inline SAL_EXCEPTION_DLLPRIVATE MalformedUriException(
- rtl::OUString const & rMessage): m_aMessage(rMessage) {}
-
- inline SAL_EXCEPTION_DLLPRIVATE MalformedUriException(
- MalformedUriException const & other): m_aMessage(other.m_aMessage) {}
-
- inline SAL_EXCEPTION_DLLPRIVATE ~MalformedUriException() {}
-
- inline SAL_EXCEPTION_DLLPRIVATE MalformedUriException operator =(
- MalformedUriException const & rOther)
- { m_aMessage = rOther.m_aMessage; return *this; }
-
- /** Get the message.
-
- @return
- A reference to the message. The reference is valid for the lifetime of
- this MalformedUriException.
- */
- inline SAL_EXCEPTION_DLLPRIVATE rtl::OUString const & getMessage() const
- { return m_aMessage; }
-
-private:
- rtl::OUString m_aMessage;
-};
-
-}
-
-#endif // INCLUDED_RTL_MALFORMEDURIEXCEPTION_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/math.h b/sal/inc/rtl/math.h
deleted file mode 100644
index ebe0a84003bd..000000000000
--- a/sal/inc/rtl/math.h
+++ /dev/null
@@ -1,475 +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_MATH_H
-#define INCLUDED_RTL_MATH_H
-
-#include "sal/config.h"
-
-#include "rtl/ustring.h"
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#if defined __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/** Formatting modes for rtl_math_doubleToString and rtl_math_doubleToUString
- and rtl_math_doubleToUStringBuffer.
- */
-enum rtl_math_StringFormat
-{
- /** Like sprintf() %E.
- */
- rtl_math_StringFormat_E,
-
- /** Like sprintf() %f.
- */
- rtl_math_StringFormat_F,
-
- /** Like sprintf() %G, 'F' or 'E' format is used depending on which one is
- more compact.
- */
- rtl_math_StringFormat_G,
-
- /** Automatic, 'F' or 'E' format is used depending on the numeric value to
- be formatted.
- */
- rtl_math_StringFormat_Automatic,
-
- /** @cond INTERNAL */
- rtl_math_StringFormat_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
- /** @endcond */
-};
-
-/** Status for rtl_math_stringToDouble and rtl_math_uStringToDouble.
- */
-enum rtl_math_ConversionStatus
-{
- /** Conversion was successful.
- */
- rtl_math_ConversionStatus_Ok,
-
- /** Conversion caused overflow or underflow.
- */
- rtl_math_ConversionStatus_OutOfRange,
-
- /** @cond INTERNAL */
- rtl_math_ConversionStatus_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
- /** @endcond */
-};
-
-/** Rounding modes for rtl_math_round.
- */
-enum rtl_math_RoundingMode
-{
- /** Like HalfUp, but corrects roundoff errors, preferred.
- */
- rtl_math_RoundingMode_Corrected,
-
- /** Floor of absolute value, signed return (commercial).
- */
- rtl_math_RoundingMode_Down,
-
- /** Ceil of absolute value, signed return (commercial).
- */
- rtl_math_RoundingMode_Up,
-
- /** Floor of signed value.
- */
- rtl_math_RoundingMode_Floor,
-
- /** Ceil of signed value.
- */
- rtl_math_RoundingMode_Ceiling,
-
- /** Frac <= 0.5 ? floor of abs : ceil of abs, signed return.
- */
- rtl_math_RoundingMode_HalfDown,
-
- /** Frac < 0.5 ? floor of abs : ceil of abs, signed return (mathematical).
- */
- rtl_math_RoundingMode_HalfUp,
-
- /** IEEE rounding mode (statistical).
- */
- rtl_math_RoundingMode_HalfEven,
-
- /** @cond INTERNAL */
- rtl_math_RoundingMode_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
- /** @endcond */
-};
-
-/** Special decimal places constants for rtl_math_doubleToString and
- rtl_math_doubleToUString and rtl_math_doubleToUStringBuffer.
- */
-enum rtl_math_DecimalPlaces
-{
- /** Value to be used with rtl_math_StringFormat_Automatic.
- */
- rtl_math_DecimalPlaces_Max = 0x7ffffff,
-
- /** Value to be used with rtl_math_StringFormat_G.
- In fact the same value as rtl_math_DecimalPlaces_Max, just an alias for
- better understanding.
- */
- rtl_math_DecimalPlaces_DefaultSignificance = rtl_math_DecimalPlaces_Max
-};
-
-
-/** Conversions analogous to sprintf() using internal rounding.
-
- +/-HUGE_VAL are converted to "INF" and "-INF", NAN values are
- converted to "NaN".
-
- @param pResult
- Returns the resulting byte string. Must itself not be null, and must point
- to either null or a valid string.
-
- @param pResultCapacity
- If null, pResult is considered to point to immutable strings, and a new
- string will be allocated in pResult.
- If non-null, it points to the current capacity of pResult, which is
- considered to point to a string buffer (pResult must not itself be null in
- this case, and must point to a string that has room for the given capacity).
- The string representation of the given double value is inserted into pResult
- at position nResultOffset. If pResult's current capacity is too small, a
- new string buffer will be allocated in pResult as necessary, and
- pResultCapacity will contain the new capacity on return.
-
- @param nResultOffset
- If pResult is used as a string buffer (i.e., pResultCapacity is non-null),
- nResultOffset specifies the insertion offset within the buffer. Ignored
- otherwise.
-
- @param fValue
- The value to convert.
-
- @param eFormat
- The format to use, one of rtl_math_StringFormat.
-
- @param nDecPlaces
- The number of decimals to be generated. Effectively fValue is rounded at
- this position, specifying nDecPlaces <= 0 accordingly rounds the value
- before the decimal point and fills with zeros.
- If eFormat == rtl_math_StringFormat_Automatic and nDecPlaces ==
- rtl_math_DecimalPlaces_Max, the highest number of significant decimals
- possible is generated.
- If eFormat == rtl_math_StringFormat_G, nDecPlaces specifies the number of
- significant digits instead. If nDecPlaces ==
- rtl_math_DecimalPlaces_DefaultSignificance, the default number (currently 6
- as implemented by most libraries) of significant digits is generated.
- According to the ANSI C90 standard the E style will be used only if the
- exponent resulting from the conversion is less than -4 or greater than or
- equal to the precision. However, as opposed to the ANSI standard, trailing
- zeros are not necessarily removed from the fractional portion of the result
- unless bEraseTrailingDecZeros == true was specified.
-
- @param cDecSeparator
- The decimal separator.
-
- @param pGroups
- Either null (no grouping is used), or a null-terminated list of group
- lengths. Each group length must be strictly positive. If the number of
- digits in a conversion exceeds the specified range, the last (highest) group
- length is repeated as needed. Values are applied from right to left, for a
- grouping of 1,00,00,000 you'd have to specify pGroups={3,2,0}.
-
- @param cGroupSeparator
- The group separator. Ignored if pGroups is null.
-
- @param bEraseTrailingDecZeros
- Trailing zeros in decimal places are erased.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_math_doubleToString(rtl_String ** pResult,
- sal_Int32 * pResultCapacity,
- sal_Int32 nResultOffset, double fValue,
- enum rtl_math_StringFormat eFormat,
- sal_Int32 nDecPlaces,
- sal_Char cDecSeparator,
- sal_Int32 const * pGroups,
- sal_Char cGroupSeparator,
- sal_Bool bEraseTrailingDecZeros)
- SAL_THROW_EXTERN_C();
-
-/** Conversions analogous to sprintf() using internal rounding.
-
- +/-HUGE_VAL are converted to "INF" and "-INF", NAN values are
- converted to "NaN".
-
- @param pResult
- Returns the resulting Unicode string. Must itself not be null, and must
- point to either null or a valid string.
-
- @param pResultCapacity
- If null, pResult is considered to point to immutable strings, and a new
- string will be allocated in pResult.
- If non-null, it points to the current capacity of pResult, which is
- considered to point to a string buffer (pResult must not itself be null in
- this case, and must point to a string that has room for the given capacity).
- The string representation of the given double value is inserted into pResult
- at position nResultOffset. If pResult's current capacity is too small, a
- new string buffer will be allocated in pResult as necessary, and
- pResultCapacity will contain the new capacity on return.
-
- @param nResultOffset
- If pResult is used as a string buffer (i.e., pResultCapacity is non-null),
- nResultOffset specifies the insertion offset within the buffer. Ignored
- otherwise.
-
- @param fValue
- The value to convert.
-
- @param eFormat
- The format to use, one of rtl_math_StringFormat.
-
- @param nDecPlaces
- The number of decimals to be generated. Effectively fValue is rounded at
- this position, specifying nDecPlaces <= 0 accordingly rounds the value
- before the decimal point and fills with zeros.
- If eFormat == rtl_math_StringFormat_Automatic and nDecPlaces ==
- rtl_math_DecimalPlaces_Max, the highest number of significant decimals
- possible is generated.
- If eFormat == rtl_math_StringFormat_G, nDecPlaces specifies the number of
- significant digits instead. If nDecPlaces ==
- rtl_math_DecimalPlaces_DefaultSignificance, the default number (currently 6
- as implemented by most libraries) of significant digits is generated.
- According to the ANSI C90 standard the E style will be used only if the
- exponent resulting from the conversion is less than -4 or greater than or
- equal to the precision. However, as opposed to the ANSI standard, trailing
- zeros are not necessarily removed from the fractional portion of the result
- unless bEraseTrailingDecZeros == true was specified.
-
- @param cDecSeparator
- The decimal separator.
-
- @param pGroups
- Either null (no grouping is used), or a null-terminated list of group
- lengths. Each group length must be strictly positive. If the number of
- digits in a conversion exceeds the specified range, the last (highest) group
- length is repeated as needed. Values are applied from right to left, for a
- grouping of 1,00,00,000 you'd have to specify pGroups={3,2,0}.
-
- @param cGroupSeparator
- The group separator. Ignored if pGroups is null.
-
- @param bEraseTrailingDecZeros
- Trailing zeros in decimal places are erased.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_math_doubleToUString(rtl_uString ** pResult,
- sal_Int32 * pResultCapacity,
- sal_Int32 nResultOffset, double fValue,
- enum rtl_math_StringFormat eFormat,
- sal_Int32 nDecPlaces,
- sal_Unicode cDecSeparator,
- sal_Int32 const * pGroups,
- sal_Unicode cGroupSeparator,
- sal_Bool bEraseTrailingDecZeros)
- SAL_THROW_EXTERN_C();
-
-/** Conversion analogous to strtod(), convert a string representing a
- decimal number into a double value.
-
- Leading tabs (0x09) and spaces (0x20) are eaten. Overflow returns
- +/-HUGE_VAL, underflow 0. In both cases pStatus is set to
- rtl_math_ConversionStatus_OutOfRange, otherwise to
- rtl_math_ConversionStatus_Ok. "INF", "-INF" and "+/-1.#INF" are
- recognized as +/-HUGE_VAL, pStatus is set to
- rtl_math_ConversionStatus_OutOfRange. "NaN" and "+/-1.#NAN" are
- recognized and the value is set to +/-NAN, pStatus is set to
- rtl_math_ConversionStatus_Ok.
-
- @param pBegin
- Points to the start of the byte string to convert. Must not be null.
-
- @param pEnd
- Points one past the end of the byte string to convert. The condition
- pEnd >= pBegin must hold.
-
- @param cDecSeparator
- The decimal separator.
-
- @param cGroupSeparator
- The group (aka thousands) separator.
-
- @param pStatus
- If non-null, returns the status of the conversion.
-
- @param pParsedEnd
- If non-null, returns one past the position of the last character parsed
- away. Thus if [pBegin..pEnd) only contains the numerical string to be
- parsed, *pParsedEnd == pEnd on return. If no numerical (sub-)string is
- found, *pParsedEnd == pBegin on return, even if there was leading
- whitespace.
- */
-SAL_DLLPUBLIC double SAL_CALL rtl_math_stringToDouble(
- sal_Char const * pBegin, sal_Char const * pEnd, sal_Char cDecSeparator,
- sal_Char cGroupSeparator, enum rtl_math_ConversionStatus * pStatus,
- sal_Char const ** pParsedEnd) SAL_THROW_EXTERN_C();
-
-/** Conversion analogous to strtod(), convert a string representing a
- decimal number into a double value.
-
- Leading tabs (U+0009) and spaces (U+0020) are eaten. Overflow returns
- +/-HUGE_VAL, underflow 0. In both cases pStatus is set to
- rtl_math_ConversionStatus_OutOfRange, otherwise to
- rtl_math_ConversionStatus_Ok. "INF", "-INF" and "+/-1.#INF" are
- recognized as +/-HUGE_VAL, pStatus is set to
- rtl_math_ConversionStatus_OutOfRange. "NaN" and "+/-1.#NAN" are
- recognized and the value is set to +/-NAN, pStatus is set to
- rtl_math_ConversionStatus_Ok.
-
- @param pBegin
- Points to the start of the Unicode string to convert. Must not be null.
-
- @param pEnd
- Points one past the end of the Unicode string to convert. The condition
- pEnd >= pBegin must hold.
-
- @param cDecSeparator
- The decimal separator.
-
- @param cGroupSeparator
- The group (aka thousands) separator.
-
- @param pStatus
- If non-null, returns the status of the conversion.
-
- @param pParsedEnd
- If non-null, returns one past the position of the last character parsed
- away. Thus if [pBegin..pEnd) only contains the numerical string to be
- parsed, *pParsedEnd == pEnd on return. If no numerical (sub-)string is
- found, *pParsedEnd == pBegin on return, even if there was leading
- whitespace.
- */
-SAL_DLLPUBLIC double SAL_CALL rtl_math_uStringToDouble(
- sal_Unicode const * pBegin, sal_Unicode const * pEnd,
- sal_Unicode cDecSeparator, sal_Unicode cGroupSeparator,
- enum rtl_math_ConversionStatus * pStatus, sal_Unicode const ** pParsedEnd)
- SAL_THROW_EXTERN_C();
-
-/** Rounds a double value.
-
- @param fValue
- Specifies the value to be rounded.
-
- @param nDecPlaces
- Specifies the decimal place where rounding occurs. Must be in the range
- -20 to +20, inclusive. Negative if rounding occurs before the decimal
- point.
-
- @param eMode
- Specifies the rounding mode.
- */
-SAL_DLLPUBLIC double SAL_CALL rtl_math_round(double fValue, int nDecPlaces,
- enum rtl_math_RoundingMode eMode)
- SAL_THROW_EXTERN_C();
-
-/** Scales fVal to a power of 10 without calling pow() or div() for nExp values
- between -16 and +16, providing a faster method.
-
- @param fValue
- The value to be raised.
-
- @param nExp
- The exponent.
-
- @return
- fVal * pow(10.0, nExp)
- */
-SAL_DLLPUBLIC double SAL_CALL rtl_math_pow10Exp(double fValue, int nExp) SAL_THROW_EXTERN_C();
-
-/** Rounds value to 15 significant decimal digits.
-
- @param fValue
- The value to be rounded.
- */
-SAL_DLLPUBLIC double SAL_CALL rtl_math_approxValue(double fValue) SAL_THROW_EXTERN_C();
-
-/** Returns more accurate e^x-1 for x near 0 than calculating directly.
-
- expm1 is part of the C99 standard, but not provided by some compilers.
-
- @param fValue
- The value x in the term e^x-1.
- */
-SAL_DLLPUBLIC double SAL_CALL rtl_math_expm1(double fValue) SAL_THROW_EXTERN_C();
-
-/** Returns more accurate log(1+x) for x near 0 than calculating directly.
-
- log1p is part of the C99 standard, but not provided by some compilers.
-
- @param fValue
- The value x in the term log(1+x).
- */
-SAL_DLLPUBLIC double SAL_CALL rtl_math_log1p(double fValue) SAL_THROW_EXTERN_C();
-
-/** Returns more accurate atanh(x) for x near 0 than calculating
- 0.5*log((1+x)/(1-x)).
-
- atanh is part of the C99 standard, but not provided by some compilers.
-
- @param fValue
- The value x in the term atanh(x).
- */
-SAL_DLLPUBLIC double SAL_CALL rtl_math_atanh(double fValue) SAL_THROW_EXTERN_C();
-
-/** Returns values of the Errorfunction erf.
-
- erf is part of the C99 standard, but not provided by some compilers.
-
- @param fValue
- The value x in the term erf(x).
- */
-SAL_DLLPUBLIC double SAL_CALL rtl_math_erf(double fValue) SAL_THROW_EXTERN_C();
-
-/** Returns values of the complement Errorfunction erfc.
-
- erfc is part of the C99 standard, but not provided by some compilers.
-
- @param fValue
- The value x in the term erfc(x).
- */
-SAL_DLLPUBLIC double SAL_CALL rtl_math_erfc(double fValue) SAL_THROW_EXTERN_C();
-
-/** Returns values of the inverse hyperbolic sine.
-
- asinh is part of the C99 standard, but not provided by some compilers.
-
- @param fValue
- The value x in the term asinh(x).
- */
-SAL_DLLPUBLIC double SAL_CALL rtl_math_asinh(double fValue) SAL_THROW_EXTERN_C();
-
-/** Returns values of the inverse hyperbolic cosine.
-
- acosh is part of the C99 standard, but not provided by some compilers.
-
- @param fValue
- The value x in the term acosh(x).
- */
-SAL_DLLPUBLIC double SAL_CALL rtl_math_acosh(double fValue) SAL_THROW_EXTERN_C();
-
-#if defined __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* INCLUDED_RTL_MATH_H */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/math.hxx b/sal/inc/rtl/math.hxx
deleted file mode 100644
index d0055c0c66e9..000000000000
--- a/sal/inc/rtl/math.hxx
+++ /dev/null
@@ -1,439 +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_MATH_HXX
-#define INCLUDED_RTL_MATH_HXX
-
-#include "rtl/math.h"
-#include "rtl/string.hxx"
-#include "rtl/ustring.hxx"
-#include "rtl/ustrbuf.hxx"
-#include "sal/mathconf.h"
-#include "sal/types.h"
-
-#include <math.h>
-
-namespace rtl {
-
-namespace math {
-
-/** A wrapper around rtl_math_doubleToString.
- */
-inline rtl::OString doubleToString(double fValue, rtl_math_StringFormat eFormat,
- sal_Int32 nDecPlaces,
- sal_Char cDecSeparator,
- sal_Int32 const * pGroups,
- sal_Char cGroupSeparator,
- bool bEraseTrailingDecZeros = false)
-{
- rtl::OString aResult;
- rtl_math_doubleToString(&aResult.pData, 0, 0, fValue, eFormat, nDecPlaces,
- cDecSeparator, pGroups, cGroupSeparator,
- bEraseTrailingDecZeros);
- return aResult;
-}
-
-/** A wrapper around rtl_math_doubleToString, with no grouping.
- */
-inline rtl::OString doubleToString(double fValue, rtl_math_StringFormat eFormat,
- sal_Int32 nDecPlaces,
- sal_Char cDecSeparator,
- bool bEraseTrailingDecZeros = false)
-{
- rtl::OString aResult;
- rtl_math_doubleToString(&aResult.pData, 0, 0, fValue, eFormat, nDecPlaces,
- cDecSeparator, 0, 0, bEraseTrailingDecZeros);
- return aResult;
-}
-
-/** A wrapper around rtl_math_doubleToUString.
- */
-inline rtl::OUString doubleToUString(double fValue,
- rtl_math_StringFormat eFormat,
- sal_Int32 nDecPlaces,
- sal_Unicode cDecSeparator,
- sal_Int32 const * pGroups,
- sal_Unicode cGroupSeparator,
- bool bEraseTrailingDecZeros = false)
-{
- rtl::OUString aResult;
- rtl_math_doubleToUString(&aResult.pData, 0, 0, fValue, eFormat, nDecPlaces,
- cDecSeparator, pGroups, cGroupSeparator,
- bEraseTrailingDecZeros);
- return aResult;
-}
-
-/** A wrapper around rtl_math_doubleToUString, with no grouping.
- */
-inline rtl::OUString doubleToUString(double fValue,
- rtl_math_StringFormat eFormat,
- sal_Int32 nDecPlaces,
- sal_Unicode cDecSeparator,
- bool bEraseTrailingDecZeros = false)
-{
- rtl::OUString aResult;
- rtl_math_doubleToUString(&aResult.pData, 0, 0, fValue, eFormat, nDecPlaces,
- cDecSeparator, 0, 0, bEraseTrailingDecZeros);
- return aResult;
-}
-
-/** A wrapper around rtl_math_doubleToUString that appends to an
- rtl::OUStringBuffer.
- */
-inline void doubleToUStringBuffer( rtl::OUStringBuffer& rBuffer, double fValue,
- rtl_math_StringFormat eFormat,
- sal_Int32 nDecPlaces,
- sal_Unicode cDecSeparator,
- sal_Int32 const * pGroups,
- sal_Unicode cGroupSeparator,
- bool bEraseTrailingDecZeros = false)
-{
- rtl_uString ** pData;
- sal_Int32 * pCapacity;
- rBuffer.accessInternals( &pData, &pCapacity );
- rtl_math_doubleToUString( pData, pCapacity, rBuffer.getLength(), fValue,
- eFormat, nDecPlaces, cDecSeparator, pGroups,
- cGroupSeparator, bEraseTrailingDecZeros);
-}
-
-/** A wrapper around rtl_math_doubleToUString that appends to an
- rtl::OUStringBuffer, with no grouping.
- */
-inline void doubleToUStringBuffer( rtl::OUStringBuffer& rBuffer, double fValue,
- rtl_math_StringFormat eFormat,
- sal_Int32 nDecPlaces,
- sal_Unicode cDecSeparator,
- bool bEraseTrailingDecZeros = false)
-{
- rtl_uString ** pData;
- sal_Int32 * pCapacity;
- rBuffer.accessInternals( &pData, &pCapacity );
- rtl_math_doubleToUString( pData, pCapacity, rBuffer.getLength(), fValue,
- eFormat, nDecPlaces, cDecSeparator, 0, 0,
- bEraseTrailingDecZeros);
-}
-
-/** A wrapper around rtl_math_stringToDouble.
- */
-inline double stringToDouble(rtl::OString const & rString,
- sal_Char cDecSeparator, sal_Char cGroupSeparator,
- rtl_math_ConversionStatus * pStatus = 0,
- sal_Int32 * pParsedEnd = 0)
-{
- sal_Char const * pBegin = rString.getStr();
- sal_Char const * pEnd;
- double fResult = rtl_math_stringToDouble(pBegin,
- pBegin + rString.getLength(),
- cDecSeparator, cGroupSeparator,
- pStatus, &pEnd);
- if (pParsedEnd != 0)
- *pParsedEnd = (sal_Int32)(pEnd - pBegin);
- return fResult;
-}
-
-/** A wrapper around rtl_math_uStringToDouble.
- */
-inline double stringToDouble(rtl::OUString const & rString,
- sal_Unicode cDecSeparator,
- sal_Unicode cGroupSeparator,
- rtl_math_ConversionStatus * pStatus = 0,
- sal_Int32 * pParsedEnd = 0)
-{
- sal_Unicode const * pBegin = rString.getStr();
- sal_Unicode const * pEnd;
- double fResult = rtl_math_uStringToDouble(pBegin,
- pBegin + rString.getLength(),
- cDecSeparator, cGroupSeparator,
- pStatus, &pEnd);
- if (pParsedEnd != 0)
- *pParsedEnd = (sal_Int32)(pEnd - pBegin);
- return fResult;
-}
-
-/** A wrapper around rtl_math_round.
- */
-inline double round(
- double fValue, int nDecPlaces = 0,
- rtl_math_RoundingMode eMode = rtl_math_RoundingMode_Corrected)
-{
- return rtl_math_round(fValue, nDecPlaces, eMode);
-}
-
-/** A wrapper around rtl_math_pow10Exp.
- */
-inline double pow10Exp(double fValue, int nExp)
-{
- return rtl_math_pow10Exp(fValue, nExp);
-}
-
-/** A wrapper around rtl_math_approxValue.
- */
-inline double approxValue(double fValue)
-{
- return rtl_math_approxValue(fValue);
-}
-
-/** A wrapper around rtl_math_expm1.
- */
-inline double expm1(double fValue)
-{
- return rtl_math_expm1(fValue);
-}
-
-/** A wrapper around rtl_math_log1p.
- */
-inline double log1p(double fValue)
-{
- return rtl_math_log1p(fValue);
-}
-
-/** A wrapper around rtl_math_atanh.
- */
-inline double atanh(double fValue)
-{
- return rtl_math_atanh(fValue);
-}
-
-/** A wrapper around rtl_math_erf.
- */
-inline double erf(double fValue)
-{
- return rtl_math_erf(fValue);
-}
-
-/** A wrapper around rtl_math_erfc.
- */
-inline double erfc(double fValue)
-{
- return rtl_math_erfc(fValue);
-}
-
-/** A wrapper around rtl_math_asinh.
- */
-inline double asinh(double fValue)
-{
- return rtl_math_asinh(fValue);
-}
-
-/** A wrapper around rtl_math_acosh.
- */
-inline double acosh(double fValue)
-{
- return rtl_math_acosh(fValue);
-}
-
-
-/** Test equality of two values with an accuracy of the magnitude of the
- given values scaled by 2^-48 (4 bits roundoff stripped).
-
- @attention
- approxEqual( value!=0.0, 0.0 ) _never_ yields true.
- */
-inline bool approxEqual(double a, double b)
-{
- if ( a == b )
- return true;
- double x = a - b;
- return (x < 0.0 ? -x : x)
- < ((a < 0.0 ? -a : a) * (1.0 / (16777216.0 * 16777216.0)));
-}
-
-/** Test equality of two values with an accuracy defined by nPrec
-
- @attention
- approxEqual( value!=0.0, 0.0 ) _never_ yields true.
- */
-inline bool approxEqual(double a, double b, sal_Int16 nPrec)
-{
- if ( a == b )
- return true;
- double x = a - b;
- return (x < 0.0 ? -x : x)
- < ((a < 0.0 ? -a : a) * (1.0 / (pow(static_cast<double>(2.0), nPrec))));
-}
-/** Add two values.
-
- If signs differ and the absolute values are equal according to approxEqual()
- the method returns 0.0 instead of calculating the sum.
-
- If you wanted to sum up multiple values it would be convenient not to call
- approxAdd() for each value but instead remember the first value not equal to
- 0.0, add all other values using normal + operator, and with the result and
- the remembered value call approxAdd().
- */
-inline double approxAdd(double a, double b)
-{
- if ( ((a < 0.0 && b > 0.0) || (b < 0.0 && a > 0.0))
- && approxEqual( a, -b ) )
- return 0.0;
- return a + b;
-}
-
-/** Substract two values (a-b).
-
- If signs are identical and the values are equal according to approxEqual()
- the method returns 0.0 instead of calculating the substraction.
- */
-inline double approxSub(double a, double b)
-{
- if ( ((a < 0.0 && b < 0.0) || (a > 0.0 && b > 0.0)) && approxEqual( a, b ) )
- return 0.0;
- return a - b;
-}
-
-/** floor() method taking approxValue() into account.
-
- Use for expected integer values being calculated by double functions.
- */
-inline double approxFloor(double a)
-{
- return floor( approxValue( a ));
-}
-
-/** ceil() method taking approxValue() into account.
-
- Use for expected integer values being calculated by double functions.
- */
-inline double approxCeil(double a)
-{
- return ceil( approxValue( a ));
-}
-
-/** Tests whether a value is neither INF nor NAN.
- */
-inline bool isFinite(double d)
-{
- return SAL_MATH_FINITE(d) != 0;
-}
-
-/** If a value represents +INF or -INF.
-
- The sign bit may be queried with isSignBitSet().
-
- If isFinite(d)==false and isInf(d)==false then NAN.
- */
-inline bool isInf(double d)
-{
- // exponent==0x7ff fraction==0
- return (SAL_MATH_FINITE(d) == 0) &&
- (reinterpret_cast< sal_math_Double * >(&d)->inf_parts.fraction_hi == 0)
- && (reinterpret_cast< sal_math_Double * >(&d)->inf_parts.fraction_lo
- == 0);
-}
-
-/** Test on any QNAN or SNAN.
- */
-inline bool isNan(double d)
-{
- // exponent==0x7ff fraction!=0
- return (SAL_MATH_FINITE(d) == 0) && (
- (reinterpret_cast< sal_math_Double * >(&d)->inf_parts.fraction_hi != 0)
- || (reinterpret_cast< sal_math_Double * >(&d)->inf_parts.fraction_lo
- != 0) );
-}
-
-/** If the sign bit is set.
- */
-inline bool isSignBitSet(double d)
-{
- return reinterpret_cast< sal_math_Double * >(&d)->inf_parts.sign != 0;
-}
-
-/** Set to +INF if bNegative==false or -INF if bNegative==true.
- */
-inline void setInf(double * pd, bool bNegative)
-{
- union
- {
- double sd;
- sal_math_Double md;
- };
- md.w32_parts.msw = bNegative ? 0xFFF00000 : 0x7FF00000;
- md.w32_parts.lsw = 0;
- *pd = sd;
-}
-
-/** Set a QNAN.
- */
-inline void setNan(double * pd)
-{
- union
- {
- double sd;
- sal_math_Double md;
- };
- md.w32_parts.msw = 0x7FFFFFFF;
- md.w32_parts.lsw = 0xFFFFFFFF;
- *pd = sd;
-}
-
-/** If a value is a valid argument for sin(), cos(), tan().
-
- IEEE 754 specifies that absolute values up to 2^64 (=1.844e19) for the
- radian must be supported by trigonometric functions. Unfortunately, at
- least on x86 architectures, the FPU doesn't generate an error pattern for
- values >2^64 but produces erroneous results instead and sets only the
- "invalid operation" (IM) flag in the status word :-( Thus the application
- has to handle it itself.
- */
-inline bool isValidArcArg(double d)
-{
- return fabs(d)
- <= (static_cast< double >(static_cast< unsigned long >(0x80000000))
- * static_cast< double >(static_cast< unsigned long >(0x80000000))
- * 2);
-}
-
-/** Safe sin(), returns NAN if not valid.
- */
-inline double sin(double d)
-{
- if ( isValidArcArg( d ) )
- return ::sin( d );
- setNan( &d );
- return d;
-}
-
-/** Safe cos(), returns NAN if not valid.
- */
-inline double cos(double d)
-{
- if ( isValidArcArg( d ) )
- return ::cos( d );
- setNan( &d );
- return d;
-}
-
-/** Safe tan(), returns NAN if not valid.
- */
-inline double tan(double d)
-{
- if ( isValidArcArg( d ) )
- return ::tan( d );
- setNan( &d );
- return d;
-}
-
-}
-
-}
-
-#endif // INCLUDED_RTL_MATH_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/process.h b/sal/inc/rtl/process.h
deleted file mode 100644
index fa8fdda62e9d..000000000000
--- a/sal/inc/rtl/process.h
+++ /dev/null
@@ -1,79 +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 _RTL_PROCESS_H_
-#define _RTL_PROCESS_H_
-
-#include "sal/config.h"
-
-#include "osl/process.h"
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- gets a 16-byte fixed size identifier which is guaranteed not to change
- during the current process.
-
- The current implementation creates a 16-byte uuid without using
- the ethernet address of system. Thus the
- identifier is different from identifiers created
- in other processes with a very probability.
-
- @param pTargetUUID 16 byte of memory
- @see rtl_createUiid()
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_getGlobalProcessId( sal_uInt8 *pTargetUUID );
-
-/** Get the nArg-th command-line argument passed to the main-function of this process.
-
- This functions differs from osl_getCommandArg() in filtering any bootstrap values
- given by command args, that means that all arguments starting with "-env:" will be
- ignored by this function.
-
- @param nArg [in] The number of the argument to return.
- @param strCommandArg [out] The string receives the nArg-th command-line argument.
- @return osl_Process_E_None or does not return.
- @see osl_getCommandArg()
- @see rtl_getCommandArgCount()
-*/
-SAL_DLLPUBLIC oslProcessError SAL_CALL rtl_getAppCommandArg(sal_uInt32 nArg, rtl_uString **strCommandArg);
-
-/** Returns the number of command line arguments at process start.
-
- This functions differs from osl_getCommandArg() in filtering any bootstrap values
- given by command args, that means that all arguments starting with "-env:" will be
- ignored by this function.
-
- @return the number of commandline arguments passed to the main-function of this process.
- @see osl_getCommandArgCount()
- @see rtl_getCommandArg()
-*/
-SAL_DLLPUBLIC sal_uInt32 SAL_CALL rtl_getAppCommandArgCount();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/random.h b/sal/inc/rtl/random.h
deleted file mode 100644
index 80c9c15a2c52..000000000000
--- a/sal/inc/rtl/random.h
+++ /dev/null
@@ -1,110 +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 _RTL_RANDOM_H_
-#define _RTL_RANDOM_H_
-
-#include "sal/config.h"
-
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*========================================================================
- *
- * rtlRandom interface.
- *
- *======================================================================*/
-/** Random Pool opaque type.
- */
-typedef void* rtlRandomPool;
-
-
-/** Error Code enumeration.
- */
-enum __rtl_RandomError
-{
- rtl_Random_E_None,
- rtl_Random_E_Argument,
- rtl_Random_E_Memory,
- rtl_Random_E_Unknown,
- rtl_Random_E_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-};
-
-/** Error Code type.
- */
-typedef enum __rtl_RandomError rtlRandomError;
-
-
-/** Create a Random Pool.
- @return initialized Random Pool, or NULL upon failure.
- */
-SAL_DLLPUBLIC rtlRandomPool SAL_CALL rtl_random_createPool (void) SAL_THROW_EXTERN_C();
-
-
-/** Destroy a Random Pool.
- @param Pool [in] a Random Pool.
- @return none. Pool is invalid.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_random_destroyPool (
- rtlRandomPool Pool
-) SAL_THROW_EXTERN_C();
-
-
-/** Add bytes to a Random Pool.
- @param[in] Pool a Random Pool.
- @param[in] Buffer a buffer containing the bytes to add.
- @param[in] Bytes the number of bytes to read from the buffer.
- @return rtl_Random_E_None upon success.
- */
-SAL_DLLPUBLIC rtlRandomError SAL_CALL rtl_random_addBytes (
- rtlRandomPool Pool,
- const void *Buffer,
- sal_Size Bytes
-) SAL_THROW_EXTERN_C();
-
-
-/** Retrieve bytes from a Random Pool.
- @param[in] Pool a Random Pool.
- @param[in,out] Buffer a buffer to receive the random bytes.
- @param[in] Bytes the number of bytes to write to the buffer.
- @return rtl_Random_E_None upon success.
- */
-SAL_DLLPUBLIC rtlRandomError SAL_CALL rtl_random_getBytes (
- rtlRandomPool Pool,
- void *Buffer,
- sal_Size Bytes
-) SAL_THROW_EXTERN_C();
-
-/*========================================================================
- *
- * The End.
- *
- *======================================================================*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTL_RANDOM_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/ref.hxx b/sal/inc/rtl/ref.hxx
deleted file mode 100644
index 8306a839da46..000000000000
--- a/sal/inc/rtl/ref.hxx
+++ /dev/null
@@ -1,243 +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 _RTL_REF_HXX_
-#define _RTL_REF_HXX_
-
-#include <sal/types.h>
-#include <osl/diagnose.h>
-#include <osl/interlck.h>
-
-namespace rtl
-{
-
-/** Interface for a reference type.
-*/
-class IReference
-{
-public:
- /** @see osl_incrementInterlockedCount.
- */
- virtual oslInterlockedCount SAL_CALL acquire() = 0;
-
- /** @see osl_decrementInterlockedCount.
- */
- virtual oslInterlockedCount SAL_CALL release() = 0;
-
-#if !defined _MSC_VER // public -> protected changes mangled names there
-protected:
-#endif
- ~IReference() {}
- // avoid warnings about virtual members and non-virtual dtor
-};
-
-
-/** Template reference class for reference type derived from IReference.
-*/
-template <class reference_type>
-class Reference
-{
- /** The <b>reference_type</b> body pointer.
- */
- reference_type * m_pBody;
-
-
-public:
- /** Constructor...
- */
- inline Reference()
- : m_pBody (0)
- {}
-
-
- /** Constructor...
- */
- inline Reference (reference_type * pBody)
- : m_pBody (pBody)
- {
- if (m_pBody)
- m_pBody->acquire();
- }
-
-
- /** Copy constructor...
- */
- inline Reference (const Reference<reference_type> & handle)
- : m_pBody (handle.m_pBody)
- {
- if (m_pBody)
- m_pBody->acquire();
- }
-
-
- /** Destructor...
- */
- inline ~Reference()
- {
- if (m_pBody)
- m_pBody->release();
- }
-
- /** Set...
- Similar to assignment.
- */
- inline Reference<reference_type> &
- SAL_CALL set (reference_type * pBody)
- {
- if (pBody)
- pBody->acquire();
- reference_type * const pOld = m_pBody;
- m_pBody = pBody;
- if (pOld)
- pOld->release();
- return *this;
- }
-
- /** Assignment.
- Unbinds this instance from its body (if bound) and
- bind it to the body represented by the handle.
- */
- inline Reference<reference_type> &
- SAL_CALL operator= (const Reference<reference_type> & handle)
- {
- return set( handle.m_pBody );
- }
-
- /** Assignment...
- */
- inline Reference<reference_type> &
- SAL_CALL operator= (reference_type * pBody)
- {
- return set( pBody );
- }
-
- /** Unbind the body from this handle.
- Note that for a handle representing a large body,
- "handle.clear().set(new body());" _might_
- perform a little bit better than "handle.set(new body());",
- since in the second case two large objects exist in memory
- (the old body and the new body).
- */
- inline Reference<reference_type> & SAL_CALL clear()
- {
- if (m_pBody)
- {
- reference_type * const pOld = m_pBody;
- m_pBody = 0;
- pOld->release();
- }
- return *this;
- }
-
-
- /** Get the body. Can be used instead of operator->().
- I.e. handle->someBodyOp() and handle.get()->someBodyOp()
- are the same.
- */
- inline reference_type * SAL_CALL get() const
- {
- return m_pBody;
- }
-
-
- /** Probably most common used: handle->someBodyOp().
- */
- inline reference_type * SAL_CALL operator->() const
- {
- OSL_PRECOND(m_pBody, "Reference::operator->() : null body");
- return m_pBody;
- }
-
-
- /** Allows (*handle).someBodyOp().
- */
- inline reference_type & SAL_CALL operator*() const
- {
- OSL_PRECOND(m_pBody, "Reference::operator*() : null body");
- return *m_pBody;
- }
-
-
- /** Returns True if the handle does point to a valid body.
- */
- inline sal_Bool SAL_CALL is() const
- {
- return (m_pBody != 0);
- }
-
-
- /** Returns True if this points to pBody.
- */
- inline sal_Bool SAL_CALL operator== (const reference_type * pBody) const
- {
- return (m_pBody == pBody);
- }
-
-
- /** Returns True if handle points to the same body.
- */
- inline sal_Bool
- SAL_CALL operator== (const Reference<reference_type> & handle) const
- {
- return (m_pBody == handle.m_pBody);
- }
-
-
- /** Needed to place References into STL collection.
- */
- inline sal_Bool
- SAL_CALL operator!= (const Reference<reference_type> & handle) const
- {
- return (m_pBody != handle.m_pBody);
- }
-
-
- /** Needed to place References into STL collection.
- */
- inline sal_Bool
- SAL_CALL operator< (const Reference<reference_type> & handle) const
- {
- return (m_pBody < handle.m_pBody);
- }
-
-
- /** Needed to place References into STL collection.
- */
- inline sal_Bool
- SAL_CALL operator> (const Reference<reference_type> & handle) const
- {
- return (m_pBody > handle.m_pBody);
- }
-};
-
-/// @cond INTERNAL
-/** Enables boost::mem_fn and boost::bind to recognize Reference.
-*/
-template <typename T>
-inline T * get_pointer( Reference<T> const& r )
-{
- return r.get();
-}
-/// @endcond
-
-} // namespace rtl
-
-#endif /* !_RTL_REF_HXX_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/strbuf.h b/sal/inc/rtl/strbuf.h
deleted file mode 100644
index 05dd2de8c61c..000000000000
--- a/sal/inc/rtl/strbuf.h
+++ /dev/null
@@ -1,137 +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 _RTL_STRBUF_H_
-#define _RTL_STRBUF_H_
-
-#include "sal/config.h"
-
-#include "rtl/string.h"
-#include "sal/saldllapi.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Allocates a new <code>String</code> that contains characters from
- the character array argument.
-
- The <code>count</code> argument specifies
- the length of the array. The initial capacity of the string buffer is
- <code>16</code> plus the length of the string argument.
-
- @param newStr out parameter, contains the new string. The reference count is 1.
- @param value the initial value of the string.
- @param count the length of value.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_stringbuffer_newFromStr_WithLength(
- rtl_String ** newStr,
- const sal_Char * value,
- sal_Int32 count);
-
-/**
- Allocates a new <code>String</code> that contains the same sequence of
- characters as the string argument.
-
- The initial capacity is the larger of:
- <ul>
- <li> The <code>bufferLen</code> argument.
- <li> The <code>length</code> of the string argument.
- </ul>
-
- @param newStr out parameter, contains the new string. The reference count is 1.
- @param capacity the initial len of the string buffer.
- @param oldStr the initial value of the string.
- @return the new capacity of the string buffer
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_stringbuffer_newFromStringBuffer(
- rtl_String ** newStr,
- sal_Int32 capacity,
- rtl_String * oldStr );
-
-/**
- Ensures that the capacity of the buffer is at least equal to the
- specified minimum.
-
- If the current capacity of this string buffer is less than the
- argument, then a new internal buffer is allocated with greater
- capacity. The new capacity is the larger of:
- <ul>
- <li>The <code>minimumCapacity</code> argument.
- <li>Twice the old capacity, plus <code>2</code>.
- </ul>
- If the <code>minimumCapacity</code> argument is nonpositive, this
- method takes no action and simply returns.
-
- @param[in,out] This the String to operate on.
- @param[in,out] capacity in: old capacity, out: new capacity.
- @param[in] minimumCapacity the minimum desired capacity.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_stringbuffer_ensureCapacity(
- rtl_String ** This,
- sal_Int32* capacity,
- sal_Int32 minimumCapacity);
-
-
-/**
- Inserts the string representation of the <code>char</code> array
- argument into this string buffer.
-
- The characters of the array argument are inserted into the
- contents of this string buffer at the position indicated by
- <code>offset</code>. The length of this string buffer increases by
- the length of the argument.
-
- @param[in,out] This the String to operate on.
- @param[in,out] capacity the capacity of the string buffer
- @param[in] offset the offset.
- @param[in] str a character array.
- @param[in] len the number of characters to append.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_stringbuffer_insert(
- rtl_String ** This,
- sal_Int32 * capacity,
- sal_Int32 offset,
- const sal_Char * str,
- sal_Int32 len);
-
-/**
- Removes the characters in a substring of this sequence.
-
- The substring begins at the specified <code>start</code> and
- is <code>len</code> characters long.
-
- start must be >= 0 && <= This->length
-
- @param[in,out] This The String to operate on.
- @param[in] start The beginning index, inclusive
- @param[in] len The substring length
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_stringbuffer_remove(
- rtl_String ** This,
- sal_Int32 start,
- sal_Int32 len );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTL_STRBUF_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/strbuf.hxx b/sal/inc/rtl/strbuf.hxx
deleted file mode 100644
index 9ebd495239cd..000000000000
--- a/sal/inc/rtl/strbuf.hxx
+++ /dev/null
@@ -1,922 +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 _RTL_STRBUF_HXX_
-#define _RTL_STRBUF_HXX_
-
-#include "sal/config.h"
-
-#include <cassert>
-#include <string.h>
-
-#include <rtl/strbuf.h>
-#include <rtl/string.hxx>
-#include <rtl/stringutils.hxx>
-
-#ifdef RTL_FAST_STRING
-#include <rtl/stringconcat.hxx>
-#endif
-
-#ifdef __cplusplus
-
-// The unittest uses slightly different code to help check that the proper
-// calls are made. The class is put into a different namespace to make
-// sure the compiler generates a different (if generating also non-inline)
-// copy of the function and does not merge them together. The class
-// is "brought" into the proper rtl namespace by a typedef below.
-#ifdef RTL_STRING_UNITTEST
-#define rtl rtlunittest
-#endif
-
-namespace rtl
-{
-
-#ifdef RTL_STRING_UNITTEST
-#undef rtl
-// helper macro to make functions appear more readable
-#define RTL_STRING_CONST_FUNCTION rtl_string_unittest_const_literal_function = true;
-#else
-#define RTL_STRING_CONST_FUNCTION
-#endif
-
-/** A string buffer implements a mutable sequence of characters.
- <p>
- String buffers are safe for use by multiple threads. The methods
- are synchronized where necessary so that all the operations on any
- particular instance behave as if they occur in some serial order.
- <p>
- String buffers are used by the compiler to implement the binary
- string concatenation operator <code>+</code>. For example, the code:
- <p><blockquote><pre>
- x = "a" + 4 + "c"
- </pre></blockquote><p>
- is compiled to the equivalent of:
- <p><blockquote><pre>
- x = new OStringBuffer().append("a").append(4).append("c")
- .makeStringAndClear()
- </pre></blockquote><p>
- The principal operations on a <code>OStringBuffer</code> are the
- <code>append</code> and <code>insert</code> methods, which are
- overloaded so as to accept data of any type. Each effectively
- converts a given datum to a string and then appends or inserts the
- characters of that string to the string buffer. The
- <code>append</code> method always adds these characters at the end
- of the buffer; the <code>insert</code> method adds the characters at
- a specified point.
- <p>
- For example, if <code>z</code> refers to a string buffer object
- whose current contents are "<code>start</code>", then
- the method call <code>z.append("le")</code> would cause the string
- buffer to contain "<code>startle</code>", whereas
- <code>z.insert(4, "le")</code> would alter the string buffer to
- contain "<code>starlet</code>".
- <p>
- Every string buffer has a capacity. As long as the length of the
- character sequence contained in the string buffer does not exceed
- the capacity, it is not necessary to allocate a new internal
- buffer array. If the internal buffer overflows, it is
- automatically made larger.
- */
-class SAL_WARN_UNUSED OStringBuffer
-{
-public:
- /**
- Constructs a string buffer with no characters in it and an
- initial capacity of 16 characters.
- */
- OStringBuffer()
- : pData(NULL)
- , nCapacity( 16 )
- {
- rtl_string_new_WithLength( &pData, nCapacity );
- }
-
- /**
- Allocates a new string buffer that contains the same sequence of
- characters as the string buffer argument.
-
- @param value a <code>OStringBuffer</code>.
- */
- OStringBuffer( const OStringBuffer & value )
- : pData(NULL)
- , nCapacity( value.nCapacity )
- {
- rtl_stringbuffer_newFromStringBuffer( &pData, value.nCapacity, value.pData );
- }
-
- /**
- Constructs a string buffer with no characters in it and an
- initial capacity specified by the <code>length</code> argument.
-
- @param length the initial capacity.
- */
- explicit OStringBuffer(int length)
- : pData(NULL)
- , nCapacity( length )
- {
- rtl_string_new_WithLength( &pData, length );
- }
-
- /**
- Constructs a string buffer so that it represents the same
- sequence of characters as the string argument.
-
- The initial
- capacity of the string buffer is <code>16</code> plus the length
- of the string argument.
-
- @param value the initial string value.
- */
- OStringBuffer(const OString& value)
- : pData(NULL)
- , nCapacity( value.getLength() + 16 )
- {
- rtl_stringbuffer_newFromStr_WithLength( &pData, value.getStr(), value.getLength() );
- }
-
- /**
- @overload
- @since LibreOffice 3.6
- */
- template< typename T >
- OStringBuffer( const T& value, typename internal::CharPtrDetector< T, internal::Dummy >::Type = internal::Dummy())
- : pData(NULL)
- {
- sal_Int32 length = rtl_str_getLength( value );
- nCapacity = length + 16;
- rtl_stringbuffer_newFromStr_WithLength( &pData, value, length );
- }
-
- template< typename T >
- OStringBuffer( T& value, typename internal::NonConstCharArrayDetector< T, internal::Dummy >::Type = internal::Dummy())
- : pData(NULL)
- {
- sal_Int32 length = rtl_str_getLength( value );
- nCapacity = length + 16;
- rtl_stringbuffer_newFromStr_WithLength( &pData, value, length );
- }
-
- /**
- Constructs a string buffer so that it represents the same
- sequence of characters as the string literal.
-
- If there are any embedded \0's in the string literal, the result is undefined.
- Use the overload that explicitly accepts length.
-
- @since LibreOffice 3.6
-
- @param literal a string literal
- */
- template< typename T >
- OStringBuffer( T& literal, typename internal::ConstCharArrayDetector< T, internal::Dummy >::Type = internal::Dummy())
- : pData(NULL)
- , nCapacity( internal::ConstCharArrayDetector< T, void >::size - 1 + 16 )
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- rtl_string_newFromLiteral( &pData, literal, internal::ConstCharArrayDetector< T, void >::size - 1, 16 );
-#ifdef RTL_STRING_UNITTEST
- rtl_string_unittest_const_literal = true;
-#endif
- }
-
- /**
- Constructs a string buffer so that it represents the same
- sequence of characters as the string argument.
-
- The initial
- capacity of the string buffer is <code>16</code> plus length
-
- @param value a character array.
- @param length the number of character which should be copied.
- The character array length must be greater or
- equal than this value.
- */
- OStringBuffer(const sal_Char * value, sal_Int32 length)
- : pData(NULL)
- , nCapacity( length + 16 )
- {
- rtl_stringbuffer_newFromStr_WithLength( &pData, value, length );
- }
-
-#ifdef RTL_FAST_STRING
- /**
- @overload
- @internal
- */
- template< typename T1, typename T2 >
- OStringBuffer( const OStringConcat< T1, T2 >& c )
- {
- const sal_Int32 l = c.length();
- nCapacity = l + 16;
- pData = rtl_string_alloc( nCapacity );
- char* end = c.addData( pData->buffer );
- *end = '\0';
- pData->length = end - pData->buffer;
- }
-#endif
-
- /** Assign to this a copy of value.
- */
- OStringBuffer& operator = ( const OStringBuffer& value )
- {
- if (this != &value)
- {
- rtl_stringbuffer_newFromStringBuffer(&pData,
- value.nCapacity,
- value.pData);
- nCapacity = value.nCapacity;
- }
- return *this;
- }
-
- /**
- Release the string data.
- */
- ~OStringBuffer()
- {
- rtl_string_release( pData );
- }
-
- /**
- Fill the string data in the new string and clear the buffer.
-
- This method is more efficient than the contructor of the string. It does
- not copy the buffer.
-
- @return the string previously contained in the buffer.
- */
- OString makeStringAndClear()
- {
- OString aRet( pData );
- rtl_string_new(&pData);
- nCapacity = 0;
- return aRet;
- }
-
- /**
- Returns the length (character count) of this string buffer.
-
- @return the number of characters in this string buffer.
- */
- sal_Int32 getLength() const
- {
- return pData->length;
- }
-
- /**
- Checks if a string buffer is empty.
-
- @return true if the string buffer is empty;
- false, otherwise.
-
- @since LibreOffice 4.1
- */
- bool isEmpty() const SAL_THROW(())
- {
- return pData->length == 0;
- }
-
- /**
- Returns the current capacity of the String buffer.
-
- The capacity
- is the amount of storage available for newly inserted
- characters. The real buffer size is 2 bytes longer, because
- all strings are 0 terminated.
-
- @return the current capacity of this string buffer.
- */
- sal_Int32 getCapacity() const
- {
- return nCapacity;
- }
-
- /**
- Ensures that the capacity of the buffer is at least equal to the
- specified minimum.
-
- The new capacity will be at least as large as the maximum of the current
- length (so that no contents of the buffer is destroyed) and the given
- minimumCapacity. If the given minimumCapacity is negative, nothing is
- changed.
-
- @param minimumCapacity the minimum desired capacity.
- */
- void ensureCapacity(sal_Int32 minimumCapacity)
- {
- rtl_stringbuffer_ensureCapacity( &pData, &nCapacity, minimumCapacity );
- }
-
- /**
- Sets the length of this String buffer.
-
- If the <code>newLength</code> argument is less than the current
- length of the string buffer, the string buffer is truncated to
- contain exactly the number of characters given by the
- <code>newLength</code> argument.
- <p>
- If the <code>newLength</code> argument is greater than or equal
- to the current length, sufficient null characters
- (<code>'&#92;u0000'</code>) are appended to the string buffer so that
- length becomes the <code>newLength</code> argument.
- <p>
- The <code>newLength</code> argument must be greater than or equal
- to <code>0</code>.
-
- @param newLength the new length of the buffer.
- */
- void setLength(sal_Int32 newLength)
- {
- assert(newLength >= 0);
- // Avoid modifications if pData points to const empty string:
- if( newLength != pData->length )
- {
- if( newLength > nCapacity )
- rtl_stringbuffer_ensureCapacity(&pData, &nCapacity, newLength);
- else
- pData->buffer[newLength] = '\0';
- pData->length = newLength;
- }
- }
-
- /**
- Returns the character at a specific index in this string buffer.
-
- The first character of a string buffer is at index
- <code>0</code>, the next at index <code>1</code>, and so on, for
- array indexing.
- <p>
- The index argument must be greater than or equal to
- <code>0</code>, and less than the length of this string buffer.
-
- @param index the index of the desired character.
- @return the character at the specified index of this string buffer.
- */
- SAL_DEPRECATED("use rtl::OStringBuffer::operator [] instead")
- sal_Char charAt( sal_Int32 index )
- {
- assert(index >= 0 && index < pData->length);
- return pData->buffer[ index ];
- }
-
- /**
- The character at the specified index of this string buffer is set
- to <code>ch</code>.
-
- The index argument must be greater than or equal to
- <code>0</code>, and less than the length of this string buffer.
-
- @param index the index of the character to modify.
- @param ch the new character.
- */
- SAL_DEPRECATED("use rtl::OStringBuffer::operator [] instead")
- OStringBuffer & setCharAt(sal_Int32 index, sal_Char ch)
- {
- assert(index >= 0 && index < pData->length);
- pData->buffer[ index ] = ch;
- return *this;
- }
-
- /**
- Return a null terminated character array.
- */
- const sal_Char* getStr() const { return pData->buffer; }
-
- /**
- Access to individual characters.
-
- @param index must be non-negative and less than length.
-
- @return a reference to the character at the given index.
-
- @since LibreOffice 3.5
- */
- sal_Char & operator [](sal_Int32 index)
- {
- assert(index >= 0 && index < pData->length);
- return pData->buffer[index];
- }
-
- /**
- Return a OString instance reflecting the current content
- of this OStringBuffer.
- */
- const OString toString() const
- {
- return OString(pData->buffer, pData->length);
- }
-
- /**
- Appends the string to this string buffer.
-
- The characters of the <code>String</code> argument are appended, in
- order, to the contents of this string buffer, increasing the
- length of this string buffer by the length of the argument.
-
- @param str a string.
- @return this string buffer.
- */
- OStringBuffer & append(const OString &str)
- {
- return append( str.getStr(), str.getLength() );
- }
-
- /**
- Appends the string representation of the <code>char</code> array
- argument to this string buffer.
-
- The characters of the array argument are appended, in order, to
- the contents of this string buffer. The length of this string
- buffer increases by the length of the argument.
-
- @param str the characters to be appended.
- @return this string buffer.
- */
- template< typename T >
- typename internal::CharPtrDetector< T, OStringBuffer& >::Type append( const T& str )
- {
- return append( str, rtl_str_getLength( str ) );
- }
-
- template< typename T >
- typename internal::NonConstCharArrayDetector< T, OStringBuffer& >::Type append( T& str )
- {
- return append( str, rtl_str_getLength( str ) );
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, OStringBuffer& >::Type append( T& literal )
- {
- RTL_STRING_CONST_FUNCTION
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- rtl_stringbuffer_insert( &pData, &nCapacity, getLength(), literal, internal::ConstCharArrayDetector< T, void >::size - 1 );
- return *this;
- }
-
- /**
- Appends the string representation of the <code>char</code> array
- argument to this string buffer.
-
- Characters of the character array <code>str</code> are appended,
- in order, to the contents of this string buffer. The length of this
- string buffer increases by the value of <code>len</code>.
-
- @param str the characters to be appended; must be non-null, and must
- point to at least len characters
- @param len the number of characters to append; must be non-negative
- @return this string buffer.
- */
- OStringBuffer & append( const sal_Char * str, sal_Int32 len)
- {
- // insert behind the last character
- rtl_stringbuffer_insert( &pData, &nCapacity, getLength(), str, len );
- return *this;
- }
-
-#ifdef RTL_FAST_STRING
- /**
- @overload
- @internal
- */
- template< typename T1, typename T2 >
- OStringBuffer& append( const OStringConcat< T1, T2 >& c )
- {
- const int l = c.length();
- if( l == 0 )
- return *this;
- rtl_stringbuffer_ensureCapacity( &pData, &nCapacity, pData->length + l );
- char* end = c.addData( pData->buffer + pData->length );
- *end = '\0';
- pData->length = end - pData->buffer;
- return *this;
- }
-#endif
-
- /**
- Appends the string representation of the <code>sal_Bool</code>
- argument to the string buffer.
-
- The argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then appended to this string buffer.
-
- @param b a <code>sal_Bool</code>.
- @return this string buffer.
- */
- OStringBuffer & append(sal_Bool b)
- {
- sal_Char sz[RTL_STR_MAX_VALUEOFBOOLEAN];
- return append( sz, rtl_str_valueOfBoolean( sz, b ) );
- }
-
- /**
- Appends the string representation of the <code>char</code>
- argument to this string buffer.
-
- The argument is appended to the contents of this string buffer.
- The length of this string buffer increases by <code>1</code>.
-
- @param c a <code>char</code>.
- @return this string buffer.
- */
- OStringBuffer & append(sal_Char c)
- {
- return append( &c, 1 );
- }
-
- /**
- Appends the string representation of the <code>sal_Int32</code>
- argument to this string buffer.
-
- The argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then appended to this string buffer.
-
- @param i an <code>sal_Int32</code>.
- @param radix the radix
- @return this string buffer.
- */
- OStringBuffer & append(sal_Int32 i, sal_Int16 radix = 10 )
- {
- sal_Char sz[RTL_STR_MAX_VALUEOFINT32];
- return append( sz, rtl_str_valueOfInt32( sz, i, radix ) );
- }
-
- /**
- Appends the string representation of the <code>long</code>
- argument to this string buffer.
-
- The argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then appended to this string buffer.
-
- @param l a <code>long</code>.
- @param radix the radix
- @return this string buffer.
- */
- OStringBuffer & append(sal_Int64 l, sal_Int16 radix = 10 )
- {
- sal_Char sz[RTL_STR_MAX_VALUEOFINT64];
- return append( sz, rtl_str_valueOfInt64( sz, l, radix ) );
- }
-
- /**
- Appends the string representation of the <code>float</code>
- argument to this string buffer.
-
- The argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then appended to this string buffer.
-
- @param f a <code>float</code>.
- @return this string buffer.
- */
- OStringBuffer & append(float f)
- {
- sal_Char sz[RTL_STR_MAX_VALUEOFFLOAT];
- return append( sz, rtl_str_valueOfFloat( sz, f ) );
- }
-
- /**
- Appends the string representation of the <code>double</code>
- argument to this string buffer.
-
- The argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then appended to this string buffer.
-
- @param d a <code>double</code>.
- @return this string buffer.
- */
- OStringBuffer & append(double d)
- {
- sal_Char sz[RTL_STR_MAX_VALUEOFDOUBLE];
- return append( sz, rtl_str_valueOfDouble( sz, d ) );
- }
-
- /**
- Inserts the string into this string buffer.
-
- The characters of the <code>String</code> argument are inserted, in
- order, into this string buffer at the indicated offset. The length
- of this string buffer is increased by the length of the argument.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param str a string.
- @return this string buffer.
- */
- OStringBuffer & insert(sal_Int32 offset, const OString & str)
- {
- return insert( offset, str.getStr(), str.getLength() );
- }
-
- /**
- Inserts the string representation of the <code>char</code> array
- argument into this string buffer.
-
- The characters of the array argument are inserted into the
- contents of this string buffer at the position indicated by
- <code>offset</code>. The length of this string buffer increases by
- the length of the argument.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param str a character array.
- @return this string buffer.
- */
- template< typename T >
- typename internal::CharPtrDetector< T, OStringBuffer& >::Type insert( sal_Int32 offset, const T& str )
- {
- return insert( offset, str, rtl_str_getLength( str ) );
- }
-
- template< typename T >
- typename internal::NonConstCharArrayDetector< T, OStringBuffer& >::Type insert( sal_Int32 offset, T& str )
- {
- return insert( offset, str, rtl_str_getLength( str ) );
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, OStringBuffer& >::Type insert( sal_Int32 offset, T& literal )
- {
- RTL_STRING_CONST_FUNCTION
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- rtl_stringbuffer_insert( &pData, &nCapacity, offset, literal, internal::ConstCharArrayDetector< T, void >::size - 1 );
- return *this;
- }
-
- /**
- Inserts the string representation of the <code>char</code> array
- argument into this string buffer.
-
- The characters of the array argument are inserted into the
- contents of this string buffer at the position indicated by
- <code>offset</code>. The length of this string buffer increases by
- the length of the argument.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param str a character array.
- @param len the number of characters to append.
- @return this string buffer.
- */
- OStringBuffer & insert( sal_Int32 offset, const sal_Char * str, sal_Int32 len)
- {
- // insert behind the last character
- rtl_stringbuffer_insert( &pData, &nCapacity, offset, str, len );
- return *this;
- }
-
- /**
- Inserts the string representation of the <code>sal_Bool</code>
- argument into this string buffer.
-
- The second argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then inserted into this string buffer at the indicated
- offset.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param b a <code>sal_Bool</code>.
- @return this string buffer.
- */
- OStringBuffer & insert(sal_Int32 offset, sal_Bool b)
- {
- sal_Char sz[RTL_STR_MAX_VALUEOFBOOLEAN];
- return insert( offset, sz, rtl_str_valueOfBoolean( sz, b ) );
- }
-
- /**
- Inserts the string representation of the <code>char</code>
- argument into this string buffer.
-
- The second argument is inserted into the contents of this string
- buffer at the position indicated by <code>offset</code>. The length
- of this string buffer increases by one.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param c a <code>char</code>.
- @return this string buffer.
- */
- OStringBuffer & insert(sal_Int32 offset, sal_Char c)
- {
- return insert( offset, &c, 1 );
- }
-
- /**
- Inserts the string representation of the second <code>sal_Int32</code>
- argument into this string buffer.
-
- The second argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then inserted into this string buffer at the indicated
- offset.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param i an <code>sal_Int32</code>.
- @param radix the radix
- @return this string buffer.
- */
- OStringBuffer & insert(sal_Int32 offset, sal_Int32 i, sal_Int16 radix = 10 )
- {
- sal_Char sz[RTL_STR_MAX_VALUEOFINT32];
- return insert( offset, sz, rtl_str_valueOfInt32( sz, i, radix ) );
- }
-
- /**
- Inserts the string representation of the <code>long</code>
- argument into this string buffer.
-
- The second argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then inserted into this string buffer at the indicated
- offset.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param l a <code>long</code>.
- @param radix the radix
- @return this string buffer.
- */
- OStringBuffer & insert(sal_Int32 offset, sal_Int64 l, sal_Int16 radix = 10 )
- {
- sal_Char sz[RTL_STR_MAX_VALUEOFINT64];
- return insert( offset, sz, rtl_str_valueOfInt64( sz, l, radix ) );
- }
-
- /**
- Inserts the string representation of the <code>float</code>
- argument into this string buffer.
-
- The second argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then inserted into this string buffer at the indicated
- offset.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param f a <code>float</code>.
- @return this string buffer.
- */
- OStringBuffer insert(sal_Int32 offset, float f)
- {
- sal_Char sz[RTL_STR_MAX_VALUEOFFLOAT];
- return insert( offset, sz, rtl_str_valueOfFloat( sz, f ) );
- }
-
- /**
- Inserts the string representation of the <code>double</code>
- argument into this string buffer.
-
- The second argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then inserted into this string buffer at the indicated
- offset.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param d a <code>double</code>.
- @return this string buffer.
- */
- OStringBuffer & insert(sal_Int32 offset, double d)
- {
- sal_Char sz[RTL_STR_MAX_VALUEOFDOUBLE];
- return insert( offset, sz, rtl_str_valueOfDouble( sz, d ) );
- }
-
- /**
- Removes the characters in a substring of this sequence.
-
- The substring begins at the specified <code>start</code> and
- is <code>len</code> characters long.
-
- start must be >= 0 && <= getLength() && <= end
-
- @param start The beginning index, inclusive
- @param len The substring length
- @return this string buffer.
- */
- OStringBuffer & remove( sal_Int32 start, sal_Int32 len )
- {
- rtl_stringbuffer_remove( &pData, start, len );
- return *this;
- }
-
-#ifdef LIBO_INTERNAL_ONLY
- // This is to complement the RTL_FAST_STRING operator+, which allows any combination of valid operands,
- // even two buffers. It's intentional it returns OString, just like the operator+ would in the fast variant.
-#ifndef RTL_FAST_STRING
- /**
- @internal
- @since LibreOffice 4.1
- */
- friend OString operator+( const OStringBuffer& str1, const OStringBuffer& str2 ) SAL_THROW(())
- {
- return OString( str1.pData ).concat( str2.pData );
- }
-#endif
-#endif
-
-private:
- /**
- A pointer to the data structur which contains the data.
- */
- rtl_String * pData;
-
- /**
- The len of the pData->buffer.
- */
- sal_Int32 nCapacity;
-};
-
-#ifdef RTL_FAST_STRING
-/**
- @internal
-*/
-template<>
-struct ToStringHelper< OStringBuffer >
- {
- static int length( const OStringBuffer& s ) { return s.getLength(); }
- static char* addData( char* buffer, const OStringBuffer& s ) { return addDataHelper( buffer, s.getStr(), s.getLength()); }
- static const bool allowOStringConcat = true;
- static const bool allowOUStringConcat = false;
- };
-#endif
-
-
-}
-
-#ifdef RTL_STRING_UNITTEST
-namespace rtl
-{
-typedef rtlunittest::OStringBuffer OStringBuffer;
-}
-#undef RTL_STRING_CONST_FUNCTION
-#endif
-
-#ifdef RTL_USING
-using ::rtl::OStringBuffer;
-#endif
-
-#endif /* __cplusplus */
-#endif /* _RTL_STRBUF_HXX_ */
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/string.h b/sal/inc/rtl/string.h
deleted file mode 100644
index 93cffa1a17b4..000000000000
--- a/sal/inc/rtl/string.h
+++ /dev/null
@@ -1,1408 +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 _RTL_STRING_H_
-#define _RTL_STRING_H_
-
-#include "sal/config.h"
-
-#include "osl/interlck.h"
-#include "rtl/textcvt.h"
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* ======================================================================= */
-
-/** Return the length of a string.
-
- The length is equal to the number of 8-bit characters in the string,
- without the terminating NUL character.
-
- @param str
- a null-terminated string.
-
- @return
- the length of the sequence of characters represented by this string,
- excluding the terminating NUL character.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_getLength(
- const sal_Char * str ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. This function
- cannot be used for language-specific sorting. Both strings must be
- null-terminated.
-
- @param first
- the first null-terminated string to be compared.
-
- @param second
- the second null-terminated string which is compared with the first one.
-
- @return
- 0 if both strings are equal, a value less than 0 if the first string is
- less than the second string, and a value greater than 0 if the first
- string is greater than the second string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_compare(
- const sal_Char * first, const sal_Char * second ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. This function
- cannot be used for language-specific sorting.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second string which is compared with the first one. Need not be
- null-terminated, but must be at least as long as the specified secondLen.
-
- @param secondLen
- the length of the second string.
-
- @return
- 0 if both strings are equal, a value less than 0 if the first string is
- less than the second string, and a value greater than 0 if the first
- string is greater than the second string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_compare_WithLength(
- const sal_Char * first, sal_Int32 firstLen, const sal_Char * second, sal_Int32 secondLen ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings with a maximum count of characters.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. This function
- cannot be used for language-specific sorting.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second string which is compared with the first one. Need not be
- null-terminated, but must be at least as long as the specified secondLen.
-
- @param secondLen
- the length of the second string.
-
- @param shortenedLen
- the maximum number of characters to compare. This length can be greater
- or smaller than the lengths of the two strings.
-
- @return
- 0 if both substrings are equal, a value less than 0 if the first substring
- is less than the second substring, and a value greater than 0 if the first
- substring is greater than the second substring.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_shortenedCompare_WithLength(
- const sal_Char * first, sal_Int32 firstLen, const sal_Char * second, sal_Int32 secondLen, sal_Int32 shortenedLen ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings from back to front.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. This function
- cannot be used for language-specific sorting.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second string which is compared with the first one. Need not be
- null-terminated, but must be at least as long as the specified secondLen.
-
- @param secondLen
- the length of the second string.
-
- @return
- 0 if both strings are equal, a value less than 0 if the first string
- compares less than the second string, and a value greater than 0 if the
- first string compares greater than the second string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_reverseCompare_WithLength(
- const sal_Char * first, sal_Int32 firstLen, const sal_Char * second, sal_Int32 secondLen ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings, ignoring the case of ASCII characters.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. Character
- values between 65 and 90 (ASCII A--Z) are interpreted as values between 97
- and 122 (ASCII a--z). This function cannot be used for language-specific
- sorting. Both strings must be null-terminated.
-
- @param first
- the first null-terminated string to be compared.
-
- @param second
- the second null-terminated string which is compared with the first one.
-
- @return
- 0 if both strings are equal, a value less than 0 if the first string is
- less than the second string, and a value greater than 0 if the first
- string is greater than the second string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_compareIgnoreAsciiCase(
- const sal_Char * first, const sal_Char * second ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings, ignoring the case of ASCII characters.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. Character
- values between 65 and 90 (ASCII A--Z) are interpreted as values between 97
- and 122 (ASCII a--z). This function cannot be used for language-specific
- sorting.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second string which is compared with the first one. Need not be
- null-terminated, but must be at least as long as the specified secondLen.
-
- @param secondLen
- the length of the second string.
-
- @return
- 0 if both strings are equal, a value less than 0 if the first string is
- less than the second string, and a value greater than 0 if the first
- string is greater than the second string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_compareIgnoreAsciiCase_WithLength(
- const sal_Char * first, sal_Int32 firstLen, const sal_Char * second, sal_Int32 secondLen ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings with a maximum count of characters, ignoring the case
- of ASCII characters.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. Character
- values between 65 and 90 (ASCII A--Z) are interpreted as values between 97
- and 122 (ASCII a--z). This function cannot be used for language-specific
- sorting.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second string which is compared with the first one. Need not be
- null-terminated, but must be at least as long as the specified secondLen.
-
- @param secondLen
- the length of the second string.
-
- @param shortenedLen
- the maximum number of characters to compare. This length can be greater
- or smaller than the lengths of the two strings.
-
- @return
- 0 if both substrings are equal, a value less than 0 if the first substring
- is less than the second substring, and a value greater than 0 if the first
- substring is greater than the second substring.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_shortenedCompareIgnoreAsciiCase_WithLength(
- const sal_Char * first, sal_Int32 firstLen, const sal_Char * second, sal_Int32 secondLen, sal_Int32 shortenedLen ) SAL_THROW_EXTERN_C();
-
-/** Return a hash code for a string.
-
- It is not allowed to store the hash code persistently, because later
- versions could return other hash codes. The string must be
- null-terminated.
-
- @param str
- a null-terminated string.
-
- @return
- a hash code for the given string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_hashCode(
- const sal_Char * str ) SAL_THROW_EXTERN_C();
-
-/** Return a hash code for a string.
-
- It is not allowed to store the hash code persistently, because later
- versions could return other hash codes.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
-
- @return
- a hash code for the given string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_hashCode_WithLength(
- const sal_Char * str, sal_Int32 len ) SAL_THROW_EXTERN_C();
-
-/** Search for the first occurrence of a character within a string.
-
- The string must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param ch
- the character to be searched for.
-
- @return
- the index (starting at 0) of the first occurrence of the character in the
- string, or -1 if the character does not occur.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_indexOfChar(
- const sal_Char * str, sal_Char ch ) SAL_THROW_EXTERN_C();
-
-/** Search for the first occurrence of a character within a string.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
-
- @param ch
- the character to be searched for.
-
- @return
- the index (starting at 0) of the first occurrence of the character in the
- string, or -1 if the character does not occur.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_indexOfChar_WithLength(
- const sal_Char * str, sal_Int32 len, sal_Char ch ) SAL_THROW_EXTERN_C();
-
-/** Search for the last occurrence of a character within a string.
-
- The string must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param ch
- the character to be searched for.
-
- @return
- the index (starting at 0) of the last occurrence of the character in the
- string, or -1 if the character does not occur. The returned value is
- always smaller than the string length.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_lastIndexOfChar(
- const sal_Char * str, sal_Char ch ) SAL_THROW_EXTERN_C();
-
-/** Search for the last occurrence of a character within a string.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
-
- @param ch
- the character to be searched for.
-
- @return
- the index (starting at 0) of the last occurrence of the character in the
- string, or -1 if the character does not occur. The returned value is
- always smaller than the string length.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_lastIndexOfChar_WithLength(
- const sal_Char * str, sal_Int32 len, sal_Char ch ) SAL_THROW_EXTERN_C();
-
-/** Search for the first occurrence of a substring within a string.
-
- If subStr is empty, or both str and subStr are empty, -1 is returned.
- Both strings must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param subStr
- the null-terminated substring to be searched for.
-
- @return
- the index (starting at 0) of the first character of the first occurrence
- of the substring within the string, or -1 if the substring does not occur.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_indexOfStr(
- const sal_Char * str, const sal_Char * subStr ) SAL_THROW_EXTERN_C();
-
-/** Search for the first occurrence of a substring within a string.
-
- If subStr is empty, or both str and subStr are empty, -1 is returned.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
-
- @param subStr
- the substring to be searched for. Need not be null-terminated, but must
- be at least as long as the specified subLen.
-
- @param subLen
- the length of the substring.
-
- @return
- the index (starting at 0) of the first character of the first occurrence
- of the substring within the string, or -1 if the substring does not occur.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_indexOfStr_WithLength(
- const sal_Char * str, sal_Int32 len, const sal_Char * subStr, sal_Int32 subLen ) SAL_THROW_EXTERN_C();
-
-/** Search for the last occurrence of a substring within a string.
-
- If subStr is empty, or both str and subStr are empty, -1 is returned.
- Both strings must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param subStr
- the null-terminated substring to be searched for.
-
- @return
- the index (starting at 0) of the first character of the last occurrence
- of the substring within the string, or -1 if the substring does not occur.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_lastIndexOfStr(
- const sal_Char * str, const sal_Char * subStr ) SAL_THROW_EXTERN_C();
-
-/** Search for the last occurrence of a substring within a string.
-
- If subStr is empty, or both str and subStr are empty, -1 is returned.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
-
- @param subStr
- the substring to be searched for. Need not be null-terminated, but must
- be at least as long as the specified subLen.
-
- @param subLen
- the length of the substring.
-
- @return
- the index (starting at 0) of the first character of the first occurrence
- of the substring within the string, or -1 if the substring does not occur.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_lastIndexOfStr_WithLength(
- const sal_Char * str, sal_Int32 len, const sal_Char * subStr, sal_Int32 subLen ) SAL_THROW_EXTERN_C();
-
-/** Replace all occurrences of a single character within a string.
-
- If oldChar does not occur within str, then the string is not modified.
- The string must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param oldChar
- the old character.
-
- @param newChar
- the new character.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_str_replaceChar(
- sal_Char * str, sal_Char oldChar, sal_Char newChar ) SAL_THROW_EXTERN_C();
-
-/** Replace all occurrences of a single character within a string.
-
- If oldChar does not occur within str, then the string is not modified.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
-
- @param oldChar
- the old character.
-
- @param newChar
- the new character.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_str_replaceChar_WithLength(
- sal_Char * str, sal_Int32 len, sal_Char oldChar, sal_Char newChar ) SAL_THROW_EXTERN_C();
-
-/** Convert all ASCII uppercase letters to lowercase within a string.
-
- The characters with values between 65 and 90 (ASCII A--Z) are replaced
- with values between 97 and 122 (ASCII a--z). The string must be
- null-terminated.
-
- @param str
- a null-terminated string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_str_toAsciiLowerCase(
- sal_Char * str ) SAL_THROW_EXTERN_C();
-
-/** Convert all ASCII uppercase letters to lowercase within a string.
-
- The characters with values between 65 and 90 (ASCII A--Z) are replaced
- with values between 97 and 122 (ASCII a--z).
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_str_toAsciiLowerCase_WithLength(
- sal_Char * str, sal_Int32 len ) SAL_THROW_EXTERN_C();
-
-/** Convert all ASCII lowercase letters to uppercase within a string.
-
- The characters with values between 97 and 122 (ASCII a--z) are replaced
- with values between 65 and 90 (ASCII A--Z). The string must be
- null-terminated.
-
- @param str
- a null-terminated string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_str_toAsciiUpperCase(
- sal_Char * str ) SAL_THROW_EXTERN_C();
-
-/** Convert all ASCII lowercase letters to uppercase within a string.
-
- The characters with values between 97 and 122 (ASCII a--z) are replaced
- with values between 65 and 90 (ASCII A--Z).
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_str_toAsciiUpperCase_WithLength(
- sal_Char * str, sal_Int32 len ) SAL_THROW_EXTERN_C();
-
-/** Remove white space from both ends of a string.
-
- All characters with values less than or equal to 32 (the space character)
- are considered to be white space. This function cannot be used for
- language-specific operations. The string must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @return
- the new length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_trim(
- sal_Char * str ) SAL_THROW_EXTERN_C();
-
-/** Remove white space from both ends of the string.
-
- All characters with values less than or equal to 32 (the space character)
- are considered to be white space. This function cannot be used for
- language-specific operations. The string must be null-terminated.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the original length of the string.
-
- @return
- the new length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_trim_WithLength(
- sal_Char * str, sal_Int32 len ) SAL_THROW_EXTERN_C();
-
-/** Create the string representation of a boolean.
-
- If b is true, the buffer is filled with the string "true" and 5 is
- returned. If b is false, the buffer is filled with the string "false" and
- 6 is returned. This function cannot be used for language-specific
- operations.
-
- @param str
- a buffer that is big enough to hold the result and the terminating NUL
- character. You should use the RTL_STR_MAX_VALUEOFBOOLEAN define to create
- a buffer that is big enough.
-
- @param b
- a boolean value.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_valueOfBoolean(
- sal_Char * str, sal_Bool b ) SAL_THROW_EXTERN_C();
-#define RTL_STR_MAX_VALUEOFBOOLEAN 6
-
-/** Create the string representation of a character.
-
- @param str
- a buffer that is big enough to hold the result and the terminating NUL
- character. You should use the RTL_STR_MAX_VALUEOFCHAR define to create a
- buffer that is big enough.
-
- @param ch
- a character value.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_valueOfChar(
- sal_Char * str, sal_Char ch ) SAL_THROW_EXTERN_C();
-#define RTL_STR_MAX_VALUEOFCHAR 2
-
-/** Create the string representation of an integer.
-
- This function cannot be used for language-specific operations.
-
- @param str
- a buffer that is big enough to hold the result and the terminating NUL
- character. You should use the RTL_STR_MAX_VALUEOFINT32 define to create a
- buffer that is big enough.
-
- @param i
- an integer value.
-
- @param radix
- the radix. Must be between RTL_STR_MIN_RADIX (2) and RTL_STR_MAX_RADIX
- (36), inclusive.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_valueOfInt32(
- sal_Char * str, sal_Int32 i, sal_Int16 radix ) SAL_THROW_EXTERN_C();
-#define RTL_STR_MIN_RADIX 2
-#define RTL_STR_MAX_RADIX 36
-#define RTL_STR_MAX_VALUEOFINT32 33
-
-/** Create the string representation of a long integer.
-
- This function cannot be used for language-specific operations.
-
- @param str
- a buffer that is big enough to hold the result and the terminating NUL
- character. You should use the RTL_STR_MAX_VALUEOFINT64 define to create a
- buffer that is big enough.
-
- @param l
- a long integer value.
-
- @param radix
- the radix. Must be between RTL_STR_MIN_RADIX (2) and RTL_STR_MAX_RADIX
- (36), inclusive.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_valueOfInt64(
- sal_Char * str, sal_Int64 l, sal_Int16 radix ) SAL_THROW_EXTERN_C();
-#define RTL_STR_MAX_VALUEOFINT64 65
-
-/** Create the string representation of an unsigned long integer.
-
- This function cannot be used for language-specific operations.
-
- @param str
- a buffer that is big enough to hold the result and the terminating NUL
- character. You should use the RTL_STR_MAX_VALUEOFUINT64 define to create a
- buffer that is big enough.
-
- @param l
- a long integer value.
-
- @param radix
- the radix. Must be between RTL_STR_MIN_RADIX (2) and RTL_STR_MAX_RADIX
- (36), inclusive.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_valueOfUInt64(
- sal_Char * str, sal_uInt64 l, sal_Int16 radix ) SAL_THROW_EXTERN_C();
-#define RTL_STR_MAX_VALUEOFUINT64 65
-
-/** Create the string representation of a float.
-
- This function cannot be used for language-specific conversion.
-
- @param str
- a buffer that is big enough to hold the result and the terminating NUL
- character. You should use the RTL_STR_MAX_VALUEOFFLOAT define to create a
- buffer that is big enough.
-
- @param f
- a float value.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_valueOfFloat(
- sal_Char * str, float f ) SAL_THROW_EXTERN_C();
-#define RTL_STR_MAX_VALUEOFFLOAT 15
-
-/** Create the string representation of a double.
-
- This function cannot be used for language-specific conversion.
-
- @param str
- a buffer that is big enough to hold the result and the terminating NUL
- character. You should use the RTL_STR_MAX_VALUEOFDOUBLE define to create
- a buffer that is big enough.
-
- @param d
- a double value.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_valueOfDouble(
- sal_Char * str, double d ) SAL_THROW_EXTERN_C();
-#define RTL_STR_MAX_VALUEOFDOUBLE 25
-
-/** Interpret a string as a boolean.
-
- This function cannot be used for language-specific conversion. The string
- must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @return
- true if the string is "1" or "true" in any ASCII case, false otherwise.
- */
-SAL_DLLPUBLIC sal_Bool SAL_CALL rtl_str_toBoolean(
- const sal_Char * str ) SAL_THROW_EXTERN_C();
-
-/** Interpret a string as an integer.
-
- This function cannot be used for language-specific conversion. The string
- must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param radix
- the radix. Must be between RTL_STR_MIN_RADIX (2) and RTL_STR_MAX_RADIX
- (36), inclusive.
-
- @return
- the integer value represented by the string, or 0 if the string does not
- represent an integer.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_str_toInt32(
- const sal_Char * str, sal_Int16 radix ) SAL_THROW_EXTERN_C();
-
-/** Interpret a string as a long integer.
-
- This function cannot be used for language-specific conversion. The string
- must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param radix
- the radix. Must be between RTL_STR_MIN_RADIX (2) and RTL_STR_MAX_RADIX
- (36), inclusive.
-
- @return
- the long integer value represented by the string, or 0 if the string does
- not represent a long integer.
- */
-SAL_DLLPUBLIC sal_Int64 SAL_CALL rtl_str_toInt64(
- const sal_Char * str, sal_Int16 radix ) SAL_THROW_EXTERN_C();
-
-/** Interpret a string as an unsigned long integer.
-
- This function cannot be used for language-specific conversion. The string
- must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param radix
- the radix. Must be between RTL_USTR_MIN_RADIX (2) and RTL_USTR_MAX_RADIX
- (36), inclusive.
-
- @return
- the unsigned long integer value represented by the string, or 0 if the
- string does not represent an unsigned long integer.
-
- @since LibreOffice 4.1
- */
-SAL_DLLPUBLIC sal_uInt64 SAL_CALL rtl_str_toUInt64(
- const sal_Char * str, sal_Int16 radix ) SAL_THROW_EXTERN_C();
-
-/** Interpret a string as a float.
-
- This function cannot be used for language-specific conversion. The string
- must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @return
- the float value represented by the string, or 0.0 if the string does not
- represent a float.
- */
-SAL_DLLPUBLIC float SAL_CALL rtl_str_toFloat(
- const sal_Char * str ) SAL_THROW_EXTERN_C();
-
-/** Interpret a string as a double.
-
- This function cannot be used for language-specific conversion. The string
- must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @return
- the float value represented by the string, or 0.0 if the string does not
- represent a double.
- */
-SAL_DLLPUBLIC double SAL_CALL rtl_str_toDouble(
- const sal_Char * str ) SAL_THROW_EXTERN_C();
-
-/* ======================================================================= */
-
-#ifdef SAL_W32
-# pragma pack(push, 8)
-#endif
-
-/** @cond INTERNAL */
-/** The implementation of a byte string.
- */
-typedef struct _rtl_String
-{
- oslInterlockedCount refCount; /* opaque */
- sal_Int32 length;
- sal_Char buffer[1];
-} rtl_String;
-/** @endcond */
-
-#if defined(SAL_W32)
-#pragma pack(pop)
-#endif
-
-/* ----------------------------------------------------------------------- */
-
-/** Increment the reference count of a string.
-
- @param str
- a string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_acquire( rtl_String * str ) SAL_THROW_EXTERN_C();
-
-/** Decrement the reference count of a string.
-
- If the count goes to zero than the string data is deleted.
-
- @param str
- a string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_release( rtl_String * str ) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string containing no characters.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_new( rtl_String ** newStr ) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string containing space for a given number of characters.
-
- The reference count of the new string will be 1. The length of the string
- will be nLen. This function does not handle out-of-memory conditions.
-
- For nLen < 0 or failed allocation this method returns NULL.
-
- The characters of the capacity are not cleared, and the length is set to
- nLen, unlike the similar method of rtl_String_new_WithLength which
- zeros out the buffer, and sets the length to 0. So should be somewhat
- more efficient for allocating a new string.
-
- call rtl_String_release to release the string
- alternatively pass ownership to an OUString with
- rtl::OUString(newStr, SAL_NO_ACQUIRE);
-
- @param[out] nLen the number of characters.
- @return pointer to the new string.
-
- @since LibreOffice 4.1
- */
-SAL_DLLPUBLIC rtl_String * SAL_CALL rtl_string_alloc(sal_Int32 nLen) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string containing space for a given number of characters.
-
- If len is greater than zero, the reference count of the new string will be
- 1. The values of all characters are set to 0 and the length of the string
- is 0. This function does not handle out-of-memory conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param len
- the number of characters.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_new_WithLength( rtl_String ** newStr, sal_Int32 len ) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string that contains a copy of another string.
-
- If the length of value is greater than zero, the reference count of the
- new string will be 1. This function does not handle out-of-memory
- conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param value
- a valid string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_newFromString( rtl_String ** newStr, const rtl_String * value ) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string that contains a copy of a character array.
-
- If the length of value is greater than zero, the reference count of the
- new string will be 1. This function does not handle out-of-memory
- conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param value
- a null-terminated character array.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_newFromStr( rtl_String ** newStr, const sal_Char * value ) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string that contains a copy of a character array.
-
- If the length of value is greater than zero, the reference count of the
- new string will be 1. This function does not handle out-of-memory
- conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param value
- a character array. Need not be null-terminated, but must be at least as
- long as the specified len.
-
- @param len
- the length of the character array.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_newFromStr_WithLength( rtl_String ** newStr, const sal_Char * value, sal_Int32 len ) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string that is a substring of this string.
-
- The substring begins at the specified beginIndex and contains count
- characters. Meaningless combinations such as negative beginIndex,
- or beginIndex + count greater than the length of the string have
- undefined behaviour.
-
- @param[out] newStr the specified substring.
- @param[in] from the String to take the substring from.
- @param[in] beginIndex the beginning index, inclusive.
- @param[in] count the number of characters.
-
- @since LibreOffice 4.0
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_newFromSubString(
- rtl_String ** newStr, const rtl_String * from,
- sal_Int32 beginIndex, sal_Int32 count ) SAL_THROW_EXTERN_C();
-
-/**
- @internal
- @since LibreOffice 3.6
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_string_newFromLiteral( rtl_String ** newStr, const sal_Char * value, sal_Int32 len, sal_Int32 allocExtra ) SAL_THROW_EXTERN_C();
-
-/** Assign a new value to a string.
-
- First releases any value str might currently hold, then acquires
- rightValue.
-
- @param str
- pointer to the string. The pointed-to data must be null or a valid
- string.
-
- @param rightValue
- a valid string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_assign( rtl_String ** str, rtl_String * rightValue ) SAL_THROW_EXTERN_C();
-
-/** Return the length of a string.
-
- The length is equal to the number of characters in the string.
-
- @param str
- a valid string.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_string_getLength( const rtl_String * str ) SAL_THROW_EXTERN_C();
-
-/** Return a pointer to the underlying character array of a string.
-
- @param str
- a valid string.
-
- @return
- a pointer to the null-terminated character array.
- */
-SAL_DLLPUBLIC sal_Char * SAL_CALL rtl_string_getStr( rtl_String * str ) SAL_THROW_EXTERN_C();
-
-/** Create a new string that is the concatenation of two other strings.
-
- The new string does not necessarily have a reference count of 1 (in cases
- where one of the two other strings is empty), so it must not be modified
- without checking the reference count. This function does not handle
- out-of-memory conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param left
- a valid string.
-
- @param right
- a valid string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_newConcat( rtl_String ** newStr, rtl_String * left, rtl_String * right ) SAL_THROW_EXTERN_C();
-
-/** Create a new string by replacing a substring of another string.
-
- The new string results from replacing a number of characters (count),
- starting at the specified position (index) in the original string (str),
- with some new substring (subStr). If subStr is null, than only a number
- of characters is deleted.
-
- The new string does not necessarily have a reference count of 1, so it
- must not be modified without checking the reference count. This function
- does not handle out-of-memory conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param str
- a valid string.
-
- @param idx
- the index into str at which to start replacement. Must be between 0 and
- the length of str, inclusive.
-
- @param count
- the number of characters to remove. Must not be negative, and the sum of
- index and count must not exceed the length of str.
-
- @param subStr
- either null or a valid string to be inserted.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_newReplaceStrAt(
- rtl_String ** newStr, rtl_String * str, sal_Int32 idx, sal_Int32 count, rtl_String * subStr ) SAL_THROW_EXTERN_C();
-
-/** Create a new string by replacing all occurrences of a single character
- within another string.
-
- The new string results from replacing all occurrences of oldChar in str
- with newChar.
-
- The new string does not necessarily have a reference count of 1 (in cases
- where oldChar does not occur in str), so it must not be modified without
- checking the reference count. This function does not handle out-of-memory
- conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param str
- a valid string.
-
- @param oldChar
- the old character.
-
- @param newChar
- the new character.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_newReplace(
- rtl_String ** newStr, rtl_String * str, sal_Char oldChar, sal_Char newChar ) SAL_THROW_EXTERN_C();
-
-/** Create a new string by replacing the first occurrence of a given substring
- with another substring.
-
- @param[in, out] newStr pointer to the new string; must not be null; must
- point to null or a valid rtl_String
-
- @param str pointer to the original string; must not be null
-
- @param from pointer to the substring to be replaced; must not be null and
- must point to memory of at least \p fromLength bytes
-
- @param fromLength the length of the \p from substring; must be non-negative
-
- @param to pointer to the replacing substring; must not be null and must
- point to memory of at least \p toLength bytes
-
- @param toLength the length of the \p to substring; must be non-negative
-
- @param[in,out] index pointer to a start index, must not be null; upon entry
- to the function its value is the index into the original string at which to
- start searching for the \p from substring, the value must be non-negative
- and not greater than the original string's length; upon exit from the
- function its value is the index into the original string at which the
- replacement took place or -1 if no replacement took place
-
- @since LibreOffice 3.6
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_string_newReplaceFirst(
- rtl_String ** newStr, rtl_String * str, char const * from,
- sal_Int32 fromLength, char const * to, sal_Int32 toLength,
- sal_Int32 * index) SAL_THROW_EXTERN_C();
-
-/** Create a new string by replacing all occurrences of a given substring with
- another substring.
-
- Replacing subsequent occurrences picks up only after a given replacement.
- That is, replacing from "xa" to "xx" in "xaa" results in "xxa", not "xxx".
-
- @param[in, out] newStr pointer to the new string; must not be null; must
- point to null or a valid rtl_String
-
- @param str pointer to the original string; must not be null
-
- @param from pointer to the substring to be replaced; must not be null and
- must point to memory of at least \p fromLength bytes
-
- @param fromLength the length of the \p from substring; must be non-negative
-
- @param to pointer to the replacing substring; must not be null and must
- point to memory of at least \p toLength bytes
-
- @param toLength the length of the \p to substring; must be non-negative
-
- @since LibreOffice 3.6
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_string_newReplaceAll(
- rtl_String ** newStr, rtl_String * str, char const * from,
- sal_Int32 fromLength, char const * to, sal_Int32 toLength)
- SAL_THROW_EXTERN_C();
-
-/** Create a new string by converting all ASCII uppercase letters to lowercase
- within another string.
-
- The new string results from replacing all characters with values between
- 65 and 90 (ASCII A--Z) by values between 97 and 122 (ASCII a--z).
-
- This function cannot be used for language-specific conversion. The new
- string does not necessarily have a reference count of 1 (in cases where
- no characters need to be converted), so it must not be modified without
- checking the reference count. This function does not handle out-of-memory
- conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param str
- a valid string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_newToAsciiLowerCase(
- rtl_String ** newStr, rtl_String * str ) SAL_THROW_EXTERN_C();
-
-/** Create a new string by converting all ASCII lowercase letters to uppercase
- within another string.
-
- The new string results from replacing all characters with values between
- 97 and 122 (ASCII a--z) by values between 65 and 90 (ASCII A--Z).
-
- This function cannot be used for language-specific conversion. The new
- string does not necessarily have a reference count of 1 (in cases where
- no characters need to be converted), so it must not be modified without
- checking the reference count. This function does not handle out-of-memory
- conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param str
- a valid string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_newToAsciiUpperCase(
- rtl_String ** newStr, rtl_String * str ) SAL_THROW_EXTERN_C();
-
-/** Create a new string by removing white space from both ends of another
- string.
-
- The new string results from removing all characters with values less than
- or equal to 32 (the space character) form both ends of str.
-
- This function cannot be used for language-specific conversion. The new
- string does not necessarily have a reference count of 1 (in cases where
- no characters need to be removed), so it must not be modified without
- checking the reference count. This function does not handle out-of-memory
- conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param str
- a valid string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_newTrim(
- rtl_String ** newStr, rtl_String * str ) SAL_THROW_EXTERN_C();
-
-/** Create a new string by extracting a single token from another string.
-
- Starting at index, the token's next token is searched for. If there is no
- such token, the result is an empty string. Otherwise, all characters from
- the start of that token and up to, but not including the next occurrence
- of cTok make up the resulting token. The return value is the position of
- the next token, or -1 if no more tokens follow.
-
- Example code could look like
- rtl_String * pToken = NULL;
- sal_Int32 nIndex = 0;
- do
- {
- ...
- nIndex = rtl_string_getToken(&pToken, pStr, 0, ';', nIndex);
- ...
- }
- while (nIndex >= 0);
-
- The new string does not necessarily have a reference count of 1, so it
- must not be modified without checking the reference count. This function
- does not handle out-of-memory conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string. If either token or index is negative, an empty token is stored in
- newStr (and -1 is returned).
-
- @param str
- a valid string.
-
- @param token
- the number of the token to return, starting at index.
-
- @param cTok
- the character that seperates the tokens.
-
- @param idx
- the position at which searching for the token starts. Must not be greater
- than the length of str.
-
- @return
- the index of the next token, or -1 if no more tokens follow.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_string_getToken(
- rtl_String ** newStr , rtl_String * str, sal_Int32 token, sal_Char cTok, sal_Int32 idx ) SAL_THROW_EXTERN_C();
-
-/* ======================================================================= */
-
-/** Supply an ASCII string literal together with its length.
-
- This macro can be used to compute (some of) the arguments in function calls
- like rtl::OString(RTL_CONSTASCII_STRINGPARAM("foo")) or
- rtl::OUString::equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("foo")).
-
- @param constAsciiStr
- must be an expression of type "(possibly cv-qualified reference to) array of
- (possibly cv-qualified) char." Each element of the referenced array must
- represent an ASCII value in the range 0x00--0x7F. The last element of the
- referenced array is not considered part of the represented ASCII string, and
- its value should be 0x00. Depending on where this macro is used, the nature
- of the supplied expression might be further restricted.
-*/
-// The &foo[0] trick is intentional, it makes sure the type is char* or const char*
-// (plain cast to const char* would not work with non-const char foo[]="a", which seems to be allowed).
-// This is to avoid mistaken use with functions that accept string literals
-// (i.e. const char (&)[N]) where usage of this macro otherwise could match
-// the argument and a following int argument with a default value (e.g. OString::match()).
-#define RTL_CONSTASCII_STRINGPARAM( constAsciiStr ) (&(constAsciiStr)[0]), \
- ((sal_Int32)SAL_N_ELEMENTS(constAsciiStr)-1)
-
-/** Supply the length of an ASCII string literal.
-
- This macro can be used to compute arguments in function calls like
- rtl::OUString::match(other, RTL_CONSTASCII_LENGTH("prefix")).
-
- @param constAsciiStr
- must be an expression of type "(possibly cv-qualified reference to) array of
- (possibly cv-qualified) char." Each element of the referenced array must
- represent an ASCII value in the range 0x00--0x7F. The last element of the
- referenced array is not considered part of the represented ASCII string, and
- its value should be 0x00. Depending on where this macro is used, the nature
- of the supplied expression might be further restricted.
-*/
-#define RTL_CONSTASCII_LENGTH( constAsciiStr ) ((sal_Int32)(SAL_N_ELEMENTS(constAsciiStr)-1))
-
-/* ======================================================================= */
-
-/* predefined constants for String-Conversion */
-#define OUSTRING_TO_OSTRING_CVTFLAGS (RTL_UNICODETOTEXT_FLAGS_UNDEFINED_DEFAULT |\
- RTL_UNICODETOTEXT_FLAGS_INVALID_DEFAULT |\
- RTL_UNICODETOTEXT_FLAGS_UNDEFINED_REPLACE |\
- RTL_UNICODETOTEXT_FLAGS_PRIVATE_MAPTO0 |\
- RTL_UNICODETOTEXT_FLAGS_NOCOMPOSITE)
-
-/* ----------------------------------------------------------------------- */
-
-/** Create a new byte string by converting a Unicode string, using a specific
- text encoding.
-
- The lengths of the byte string and the Unicode string may differ (e.g.,
- for double-byte encodings, UTF-7, UTF-8).
-
- If the length of the Unicode string is greater than zero, the reference
- count of the new string will be 1.
-
- If an out-of-memory condition occurs, newStr will point to a null pointer
- upon return.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param str
- a Unicode character array. Need not be null-terminated, but must be at
- least as long as the specified len.
-
- @param len
- the length of the Unicode character array.
-
- @param encoding
- the text encoding to use for conversion.
-
- @param convertFlags
- flags which control the conversion. Either use
- OUSTRING_TO_OSTRING_CVTFLAGS, or see
- <http://udk.openoffice.org/cpp/man/spec/textconversion.html> for more
- details.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString2String(
- rtl_String ** newStr, const sal_Unicode * str, sal_Int32 len, rtl_TextEncoding encoding, sal_uInt32 convertFlags ) SAL_THROW_EXTERN_C();
-
-/**
- Converts a Unicode string to a byte string, signalling failure.
-
- @param pTarget
- An out parameter receiving the converted string. Must not be null itself, and
- must contain either null or a pointer to a valid rtl_String; the contents are
- not modified if conversion fails (rtl_convertUStringToString returns false).
-
- @param pSource
- The Unicode string. May only be null if nLength is zero.
-
- @param nLength
- The length of the Unicode string. Must be non-negative.
-
- @param nEncoding
- The text encoding to convert into. Must be an octet encoding (i.e.,
- rtl_isOctetTextEncoding(nEncoding) must return true).
-
- @param nFlags
- A combination of RTL_UNICODETOTEXT_FLAGS that detail how to do the conversion
- (see rtl_convertUnicodeToText). RTL_UNICODETOTEXT_FLAGS_FLUSH need not be
- included, it is implicitly assumed. Typical uses are either
- RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR |
- RTL_UNICODETOTEXT_FLAGS_INVALID_ERROR (fail if a Unicode character cannot be
- converted to the target nEncoding) or OUSTRING_TO_OSTRING_CVTFLAGS (make a
- best efforts conversion).
-
- @return
- True if the conversion succeeded, false otherwise.
- */
-SAL_DLLPUBLIC sal_Bool SAL_CALL rtl_convertUStringToString(
- rtl_String ** pTarget,
- sal_Unicode const * pSource,
- sal_Int32 nLength,
- rtl_TextEncoding nEncoding,
- sal_uInt32 nFlags)
- SAL_THROW_EXTERN_C();
-
-/** Ensure a string has enough space for a given number of characters.
-
- If the given string is large enough and has refcount of 1, it is not altered in any way.
- Otherwise it is replaced by a copy that has enough space for the given number of characters,
- data from the source string is copied to the beginning of it, the content of the remaining
- capacity undefined, the string has refcount of 1, and refcount of the original string is decreased.
-
- @param str
- pointer to the string. The pointed-to data must be a valid string.
-
- @param size
- the number of characters
-
- @since LibreOffice 4.1
- @internal
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string_ensureCapacity( rtl_String ** str, sal_Int32 size ) SAL_THROW_EXTERN_C();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTL_STRING_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/string.hxx b/sal/inc/rtl/string.hxx
deleted file mode 100644
index e3d5afbc895a..000000000000
--- a/sal/inc/rtl/string.hxx
+++ /dev/null
@@ -1,1709 +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 _RTL_STRING_HXX_
-#define _RTL_STRING_HXX_
-
-#include "sal/config.h"
-
-#include <cassert>
-#include <ostream>
-#include <string.h>
-
-#include <osl/diagnose.h>
-#include <rtl/textenc.h>
-#include <rtl/string.h>
-#include <rtl/stringutils.hxx>
-
-#ifdef RTL_FAST_STRING
-#include <rtl/stringconcat.hxx>
-#endif
-
-#include "sal/log.hxx"
-
-#if !defined EXCEPTIONS_OFF
-#include <new>
-#endif
-
-// The unittest uses slightly different code to help check that the proper
-// calls are made. The class is put into a different namespace to make
-// sure the compiler generates a different (if generating also non-inline)
-// copy of the function and does not merge them together. The class
-// is "brought" into the proper rtl namespace by a typedef below.
-#ifdef RTL_STRING_UNITTEST
-#define rtl rtlunittest
-#endif
-
-namespace rtl
-{
-
-#ifdef RTL_STRING_UNITTEST
-#undef rtl
-// helper macro to make functions appear more readable
-#define RTL_STRING_CONST_FUNCTION rtl_string_unittest_const_literal_function = true;
-#else
-#define RTL_STRING_CONST_FUNCTION
-#endif
-
-/* ======================================================================= */
-
-/**
- This String class provide base functionality for C++ like 8-Bit
- character array handling. The advantage of this class is, that it
- handle all the memory managament for you - and it do it
- more efficient. If you assign a string to another string, the
- data of both strings are shared (without any copy operation or
- memory allocation) as long as you do not change the string. This class
- stores also the length of the string, so that many operations are
- faster as the C-str-functions.
-
- This class provide only readonly string handling. So you could create
- a string and you could only query the content from this string.
- It provide also functionality to change the string, but this results
- in every case in a new string instance (in the most cases with an
- memory allocation). You don't have functionality to change the
- content of the string. If you want change the string content, than
- you should us the OStringBuffer class, which provide these
- functionality and avoid to much memory allocation.
-
- The design of this class is similar to the string classes in Java
- and so more people should have fewer understanding problems when they
- use this class.
-*/
-
-class SAL_WARN_UNUSED OString
-{
-public:
- /// @cond INTERNAL
- rtl_String * pData;
- /// @endcond
-
-private:
- class DO_NOT_ACQUIRE;
-
- OString( rtl_String * value, SAL_UNUSED_PARAMETER DO_NOT_ACQUIRE * )
- {
- pData = value;
- }
-
-public:
- /**
- New string containing no characters.
- */
- OString() SAL_THROW(())
- {
- pData = 0;
- rtl_string_new( &pData );
- }
-
- /**
- New string from OString.
-
- @param str a OString.
- */
- OString( const OString & str ) SAL_THROW(())
- {
- pData = str.pData;
- rtl_string_acquire( pData );
- }
-
- /**
- New string from OString data.
-
- @param str a OString data.
- */
- OString( rtl_String * str ) SAL_THROW(())
- {
- pData = str;
- rtl_string_acquire( pData );
- }
-
- /** New string from OString data without acquiring it. Takeover of ownership.
-
- The SAL_NO_ACQUIRE dummy parameter is only there to distinguish this
- from other constructors.
-
- @param str a OString data.
- */
- inline OString( rtl_String * str, __sal_NoAcquire ) SAL_THROW(())
- {
- pData = str;
- }
-
- /**
- New string from a single character.
-
- @param value a character.
- */
- explicit OString( sal_Char value ) SAL_THROW(())
- : pData (0)
- {
- rtl_string_newFromStr_WithLength( &pData, &value, 1 );
- }
-
- /**
- New string from a character buffer array.
-
- Note: The argument type is always either char* or const char*. The template is
- used only for technical reasons, as is the second argument.
-
- @param value a NULL-terminated character array.
- */
- template< typename T >
- OString( const T& value, typename internal::CharPtrDetector< T, internal::Dummy >::Type = internal::Dummy() ) SAL_THROW(())
- {
- pData = 0;
- rtl_string_newFromStr( &pData, value );
- }
-
- template< typename T >
- OString( T& value, typename internal::NonConstCharArrayDetector< T, internal::Dummy >::Type = internal::Dummy() ) SAL_THROW(())
- {
- pData = 0;
- rtl_string_newFromStr( &pData, value );
- }
-
- /**
- New string from a string literal.
-
- If there are any embedded \0's in the string literal, the result is undefined.
- Use the overload that explicitly accepts length.
-
- @since LibreOffice 3.6
-
- @param literal a string literal
- */
- template< typename T >
- OString( T& literal, typename internal::ConstCharArrayDetector< T, internal::Dummy >::Type = internal::Dummy() ) SAL_THROW(())
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- pData = 0;
- if( internal::ConstCharArrayDetector< T, void >::size - 1 == 0 ) // empty string
- rtl_string_new( &pData );
- else
- rtl_string_newFromLiteral( &pData, literal, internal::ConstCharArrayDetector< T, void >::size - 1, 0 );
-#ifdef RTL_STRING_UNITTEST
- rtl_string_unittest_const_literal = true;
-#endif
- }
-
- /**
- New string from a character buffer array.
-
- @param value a character array.
- @param length the number of character which should be copied.
- The character array length must be greater or
- equal than this value.
- */
- OString( const sal_Char * value, sal_Int32 length ) SAL_THROW(())
- {
- pData = 0;
- rtl_string_newFromStr_WithLength( &pData, value, length );
- }
-
- /**
- New string from a Unicode character buffer array.
-
- @param value a Unicode character array.
- @param length the number of character which should be converted.
- The Unicode character array length must be
- greater or equal than this value.
- @param encoding the text encoding in which the Unicode character
- sequence should be converted.
- @param convertFlags flags which controls the conversion.
- see RTL_UNICODETOTEXT_FLAGS_...
-
- @exception std::bad_alloc is thrown if an out-of-memory condition occurs
- */
- OString( const sal_Unicode * value, sal_Int32 length,
- rtl_TextEncoding encoding,
- sal_uInt32 convertFlags = OUSTRING_TO_OSTRING_CVTFLAGS )
- {
- pData = 0;
- rtl_uString2String( &pData, value, length, encoding, convertFlags );
- if (pData == 0) {
-#if defined EXCEPTIONS_OFF
- abort();
-#else
- throw std::bad_alloc();
-#endif
- }
- }
-
-#ifdef RTL_FAST_STRING
- /**
- @overload
- @internal
- */
- template< typename T1, typename T2 >
- OString( const OStringConcat< T1, T2 >& c )
- {
- const sal_Int32 l = c.length();
- pData = rtl_string_alloc( l );
- if (l != 0)
- {
- char* end = c.addData( pData->buffer );
- pData->length = end - pData->buffer;
- *end = '\0';
- }
- }
-#endif
-
- /**
- Release the string data.
- */
- ~OString() SAL_THROW(())
- {
- rtl_string_release( pData );
- }
-
- /**
- Assign a new string.
-
- @param str a OString.
- */
- OString & operator=( const OString & str ) SAL_THROW(())
- {
- rtl_string_assign( &pData, str.pData );
- return *this;
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, OString& >::Type operator=( T& literal ) SAL_THROW(())
- {
- RTL_STRING_CONST_FUNCTION
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- if( internal::ConstCharArrayDetector< T, void >::size - 1 == 0 ) // empty string
- rtl_string_new( &pData );
- else
- rtl_string_newFromLiteral( &pData, literal, internal::ConstCharArrayDetector< T, void >::size - 1, 0 );
- return *this;
- }
-
- /**
- Append a string to this string.
-
- @param str a OString.
- */
- OString & operator+=( const OString & str ) SAL_THROW(())
- {
- rtl_string_newConcat( &pData, pData, str.pData );
- return *this;
- }
-
-#ifdef RTL_FAST_STRING
- /**
- @overload
- @internal
- */
- template< typename T1, typename T2 >
- OString& operator+=( const OStringConcat< T1, T2 >& c )
- {
- const int l = c.length();
- if( l == 0 )
- return *this;
- rtl_string_ensureCapacity( &pData, pData->length + l );
- char* end = c.addData( pData->buffer + pData->length );
- *end = '\0';
- pData->length = end - pData->buffer;
- return *this;
- }
-#endif
- /**
- Returns the length of this string.
-
- The length is equal to the number of characters in this string.
-
- @return the length of the sequence of characters represented by this
- object.
- */
- sal_Int32 getLength() const SAL_THROW(()) { return pData->length; }
-
- /**
- Checks if a string is empty.
-
- @return true if the string is empty;
- false, otherwise.
-
- @since LibreOffice 3.4
- */
- bool isEmpty() const SAL_THROW(())
- {
- return pData->length == 0;
- }
-
- /**
- Returns a pointer to the characters of this string.
-
- <p>The returned pointer is guaranteed to point to a null-terminated byte
- string. But note that this string object may contain embedded null
- characters, which will thus also be embedded in the returned
- null-terminated byte string.</p>
-
- @return a pointer to a null-terminated byte string representing the
- characters of this string object.
- */
- const sal_Char * getStr() const SAL_THROW(()) { return pData->buffer; }
-
- /**
- Access to individual characters.
-
- @param index must be non-negative and less than length.
-
- @return the character at the given index.
-
- @since LibreOffice 3.5
- */
- sal_Char operator [](sal_Int32 index) const {
- assert(index >= 0 && index <= getLength());
- //TODO: should really check for < getLength(), but there is quite
- // some clever code out there that violates this function's
- // documented precondition and relies on s[s.getLength()] == 0 and
- // that would need to be fixed first
- return getStr()[index];
- }
-
- /**
- Compares two strings.
-
- The comparison is based on the numeric value of each character in
- the strings and return a value indicating their relationship.
- This function can't be used for language specific sorting.
-
- @param str the object to be compared.
- @return 0 - if both strings are equal
- < 0 - if this string is less than the string argument
- > 0 - if this string is greater than the string argument
- */
- sal_Int32 compareTo( const OString & str ) const SAL_THROW(())
- {
- return rtl_str_compare_WithLength( pData->buffer, pData->length,
- str.pData->buffer, str.pData->length );
- }
-
- /**
- Compares two strings with an maximum count of characters.
-
- The comparison is based on the numeric value of each character in
- the strings and return a value indicating their relationship.
- This function can't be used for language specific sorting.
-
- @param rObj the object to be compared.
- @param maxLength the maximum count of characters to be compared.
- @return 0 - if both strings are equal
- < 0 - if this string is less than the string argument
- > 0 - if this string is greater than the string argument
- */
- sal_Int32 compareTo( const OString & rObj, sal_Int32 maxLength ) const SAL_THROW(())
- {
- return rtl_str_shortenedCompare_WithLength( pData->buffer, pData->length,
- rObj.pData->buffer, rObj.pData->length, maxLength );
- }
-
- /**
- Compares two strings in reverse order.
-
- The comparison is based on the numeric value of each character in
- the strings and return a value indicating their relationship.
- This function can't be used for language specific sorting.
-
- @param str the object to be compared.
- @return 0 - if both strings are equal
- < 0 - if this string is less than the string argument
- > 0 - if this string is greater than the string argument
- */
- sal_Int32 reverseCompareTo( const OString & str ) const SAL_THROW(())
- {
- return rtl_str_reverseCompare_WithLength( pData->buffer, pData->length,
- str.pData->buffer, str.pData->length );
- }
-
- /**
- Perform a comparison of two strings.
-
- The result is true if and only if second string
- represents the same sequence of characters as the first string.
- This function can't be used for language specific comparison.
-
- @param str the object to be compared.
- @return sal_True if the strings are equal;
- sal_False, otherwise.
- */
- sal_Bool equals( const OString & str ) const SAL_THROW(())
- {
- if ( pData->length != str.pData->length )
- return sal_False;
- if ( pData == str.pData )
- return sal_True;
- return rtl_str_reverseCompare_WithLength( pData->buffer, pData->length,
- str.pData->buffer, str.pData->length ) == 0;
- }
-
- /**
- Perform a comparison of two strings.
-
- The result is true if and only if second string
- represents the same sequence of characters as the first string.
- The ASCII string must be NULL-terminated and must be greater or
- equal as length.
- This function can't be used for language specific comparison.
-
-
- @param value a character array.
- @param length the length of the character array.
- @return sal_True if the strings are equal;
- sal_False, otherwise.
- */
- sal_Bool equalsL( const sal_Char* value, sal_Int32 length ) const SAL_THROW(())
- {
- if ( pData->length != length )
- return sal_False;
-
- return rtl_str_reverseCompare_WithLength( pData->buffer, pData->length,
- value, length ) == 0;
- }
-
- /**
- Perform a ASCII lowercase comparison of two strings.
-
- The result is true if and only if second string
- represents the same sequence of characters as the first string,
- ignoring the case.
- Character values between 65 and 90 (ASCII A-Z) are interpreted as
- values between 97 and 122 (ASCII a-z).
- This function can't be used for language specific comparison.
-
- @param str the object to be compared.
- @return sal_True if the strings are equal;
- sal_False, otherwise.
- */
- sal_Bool equalsIgnoreAsciiCase( const OString & str ) const SAL_THROW(())
- {
- if ( pData->length != str.pData->length )
- return sal_False;
- if ( pData == str.pData )
- return sal_True;
- return rtl_str_compareIgnoreAsciiCase_WithLength( pData->buffer, pData->length,
- str.pData->buffer, str.pData->length ) == 0;
- }
-
- /**
- Perform a ASCII lowercase comparison of two strings.
-
- The result is true if and only if second string
- represents the same sequence of characters as the first string,
- ignoring the case.
- Character values between 65 and 90 (ASCII A-Z) are interpreted as
- values between 97 and 122 (ASCII a-z).
- Since this method is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range between 0 and
- 127. The ASCII string must be NULL-terminated.
- This function can't be used for language specific comparison.
-
- Note: The argument type is always either char* or const char*, the return type is bool.
- The template is used only for technical reasons.
-
- @param asciiStr the 8-Bit ASCII character string to be compared.
- @return sal_True if the strings are equal;
- sal_False, otherwise.
- */
- template< typename T >
- typename internal::CharPtrDetector< T, bool >::Type equalsIgnoreAsciiCase( const T& asciiStr ) const SAL_THROW(())
- {
- return rtl_str_compareIgnoreAsciiCase( pData->buffer, asciiStr ) == 0;
- }
-
- template< typename T >
- typename internal::NonConstCharArrayDetector< T, bool >::Type equalsIgnoreAsciiCase( T& asciiStr ) const SAL_THROW(())
- {
- return rtl_str_compareIgnoreAsciiCase( pData->buffer, asciiStr ) == 0;
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, bool >::Type equalsIgnoreAsciiCase( T& literal ) const SAL_THROW(())
- {
- RTL_STRING_CONST_FUNCTION
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- if ( pData->length != internal::ConstCharArrayDetector< T, void >::size - 1 )
- return false;
- return rtl_str_compareIgnoreAsciiCase_WithLength( pData->buffer, pData->length,
- literal, internal::ConstCharArrayDetector< T, void >::size - 1 ) == 0;
- }
-
- /**
- Perform a ASCII lowercase comparison of two strings.
-
- The result is true if and only if second string
- represents the same sequence of characters as the first string,
- ignoring the case.
- Character values between 65 and 90 (ASCII A-Z) are interpreted as
- values between 97 and 122 (ASCII a-z).
- Since this method is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range between 0 and
- 127. The ASCII string must be greater or equal in length as asciiStrLength.
- This function can't be used for language specific comparison.
-
- @param asciiStr the 8-Bit ASCII character string to be compared.
- @param asciiStrLength the length of the ascii string
- @return sal_True if the strings are equal;
- sal_False, otherwise.
- */
- sal_Bool equalsIgnoreAsciiCaseL( const sal_Char * asciiStr, sal_Int32 asciiStrLength ) const SAL_THROW(())
- {
- if ( pData->length != asciiStrLength )
- return sal_False;
-
- return rtl_str_compareIgnoreAsciiCase_WithLength( pData->buffer, pData->length,
- asciiStr, asciiStrLength ) == 0;
- }
-
- /**
- Match against a substring appearing in this string.
-
- The result is true if and only if the second string appears as a substring
- of this string, at the given position.
- This function can't be used for language specific comparison.
-
- @param str the object (substring) to be compared.
- @param fromIndex the index to start the comparion from.
- The index must be greater or equal than 0
- and less or equal as the string length.
- @return sal_True if str match with the characters in the string
- at the given position;
- sal_False, otherwise.
- */
- sal_Bool match( const OString & str, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- return rtl_str_shortenedCompare_WithLength( pData->buffer+fromIndex, pData->length-fromIndex,
- str.pData->buffer, str.pData->length, str.pData->length ) == 0;
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, bool >::Type match( T& literal, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- RTL_STRING_CONST_FUNCTION
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return rtl_str_shortenedCompare_WithLength(
- pData->buffer + fromIndex, pData->length - fromIndex,
- literal, internal::ConstCharArrayDetector< T, void >::size - 1, internal::ConstCharArrayDetector< T, void >::size - 1) == 0;
- }
-
- /**
- Match against a substring appearing in this string.
-
- @param str the substring to be compared; must not be null and must point
- to memory of at least strLength bytes
-
- @param strLength the length of the substring; must be non-negative
-
- @param fromIndex the index into this string to start the comparison at;
- must be non-negative and not greater than this string's length
-
- @return true if and only if the given str is contained as a substring of
- this string at the given fromIndex
-
- @since LibreOffice 3.6
- */
- bool matchL(
- char const * str, sal_Int32 strLength, sal_Int32 fromIndex = 0)
- const
- {
- return rtl_str_shortenedCompare_WithLength(
- pData->buffer + fromIndex, pData->length - fromIndex,
- str, strLength, strLength) == 0;
- }
-
- // This overload is left undefined, to detect calls of matchL that
- // erroneously use RTL_CONSTASCII_USTRINGPARAM instead of
- // RTL_CONSTASCII_STRINGPARAM (but would lead to ambiguities on 32 bit
- // platforms):
-#if SAL_TYPES_SIZEOFLONG == 8
- void matchL(char const *, sal_Int32, rtl_TextEncoding) const;
-#endif
-
- /**
- Match against a substring appearing in this string, ignoring the case of
- ASCII letters.
-
- The result is true if and only if the second string appears as a substring
- of this string, at the given position.
- Character values between 65 and 90 (ASCII A-Z) are interpreted as
- values between 97 and 122 (ASCII a-z).
- This function can't be used for language specific comparison.
-
- @param str the object (substring) to be compared.
- @param fromIndex the index to start the comparion from.
- The index must be greater or equal than 0
- and less or equal as the string length.
- @return sal_True if str match with the characters in the string
- at the given position;
- sal_False, otherwise.
- */
- sal_Bool matchIgnoreAsciiCase( const OString & str, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- return rtl_str_shortenedCompareIgnoreAsciiCase_WithLength( pData->buffer+fromIndex, pData->length-fromIndex,
- str.pData->buffer, str.pData->length,
- str.pData->length ) == 0;
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, bool >::Type matchIgnoreAsciiCase( T& literal, sal_Int32 fromIndex = 0 ) const
- {
- RTL_STRING_CONST_FUNCTION
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return rtl_str_shortenedCompareIgnoreAsciiCase_WithLength( pData->buffer+fromIndex, pData->length-fromIndex,
- literal, internal::ConstCharArrayDetector< T, void >::size - 1, internal::ConstCharArrayDetector< T, void >::size - 1 ) == 0;
- }
-
- /**
- Check whether this string starts with a given substring.
-
- @param str the substring to be compared
-
- @return true if and only if the given str appears as a substring at the
- start of this string
-
- @since LibreOffice 4.0
- */
- bool startsWith(OString const & str) const {
- return match(str, 0);
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 4.0
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, bool >::Type startsWith( T& literal ) const
- {
- RTL_STRING_CONST_FUNCTION
- return match(literal, 0);
- }
-
- /**
- Check whether this string ends with a given substring.
-
- @param str the substring to be compared
-
- @return true if and only if the given str appears as a substring at the
- end of this string
-
- @since LibreOffice 3.6
- */
- bool endsWith(OString const & str) const {
- return str.getLength() <= getLength()
- && match(str, getLength() - str.getLength());
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, bool >::Type endsWith( T& literal ) const
- {
- RTL_STRING_CONST_FUNCTION
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return internal::ConstCharArrayDetector< T, void >::size - 1 <= getLength()
- && match(literal, getLength() - ( internal::ConstCharArrayDetector< T, void >::size - 1 ));
- }
-
- /**
- Check whether this string ends with a given substring.
-
- @param str the substring to be compared; must not be null and must point
- to memory of at least strLength bytes
-
- @param strLength the length of the substring; must be non-negative
-
- @return true if and only if the given str appears as a substring at the
- end of this string
-
- @since LibreOffice 3.6
- */
- bool endsWithL(char const * str, sal_Int32 strLength) const {
- return strLength <= getLength()
- && matchL(str, strLength, getLength() - strLength);
- }
-
- friend sal_Bool operator == ( const OString& rStr1, const OString& rStr2 ) SAL_THROW(())
- { return rStr1.equals(rStr2); }
- friend sal_Bool operator != ( const OString& rStr1, const OString& rStr2 ) SAL_THROW(())
- { return !(operator == ( rStr1, rStr2 )); }
- friend sal_Bool operator < ( const OString& rStr1, const OString& rStr2 ) SAL_THROW(())
- { return rStr1.compareTo( rStr2 ) < 0; }
- friend sal_Bool operator > ( const OString& rStr1, const OString& rStr2 ) SAL_THROW(())
- { return rStr1.compareTo( rStr2 ) > 0; }
- friend sal_Bool operator <= ( const OString& rStr1, const OString& rStr2 ) SAL_THROW(())
- { return rStr1.compareTo( rStr2 ) <= 0; }
- friend sal_Bool operator >= ( const OString& rStr1, const OString& rStr2 ) SAL_THROW(())
- { return rStr1.compareTo( rStr2 ) >= 0; }
-
- template< typename T >
- friend typename internal::CharPtrDetector< T, bool >::Type operator==( const OString& rStr1, const T& value ) SAL_THROW(())
- {
- return rStr1.compareTo( value ) == 0;
- }
-
- template< typename T >
- friend typename internal::NonConstCharArrayDetector< T, bool >::Type operator==( const OString& rStr1, T& value ) SAL_THROW(())
- {
- return rStr1.compareTo( value ) == 0;
- }
-
- template< typename T >
- friend typename internal::CharPtrDetector< T, bool >::Type operator==( const T& value, const OString& rStr2 ) SAL_THROW(())
- {
- return rStr2.compareTo( value ) == 0;
- }
-
- template< typename T >
- friend typename internal::NonConstCharArrayDetector< T, bool >::Type operator==( T& value, const OString& rStr2 ) SAL_THROW(())
- {
- return rStr2.compareTo( value ) == 0;
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- friend typename internal::ConstCharArrayDetector< T, bool >::Type operator==( const OString& rStr, T& literal ) SAL_THROW(())
- {
- RTL_STRING_CONST_FUNCTION
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return rStr.getLength() == internal::ConstCharArrayDetector< T, void >::size - 1
- && rtl_str_compare_WithLength( rStr.pData->buffer, rStr.pData->length, literal,
- internal::ConstCharArrayDetector< T, void >::size - 1 ) == 0;
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- friend typename internal::ConstCharArrayDetector< T, bool >::Type operator==( T& literal, const OString& rStr ) SAL_THROW(())
- {
- RTL_STRING_CONST_FUNCTION
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return rStr.getLength() == internal::ConstCharArrayDetector< T, void >::size - 1
- && rtl_str_compare_WithLength( rStr.pData->buffer, rStr.pData->length, literal,
- internal::ConstCharArrayDetector< T, void >::size - 1 ) == 0;
- }
-
- template< typename T >
- friend typename internal::CharPtrDetector< T, bool >::Type operator!=( const OString& rStr1, const T& value ) SAL_THROW(())
- {
- return !(operator == ( rStr1, value ));
- }
-
- template< typename T >
- friend typename internal::NonConstCharArrayDetector< T, bool >::Type operator!=( const OString& rStr1, T& value ) SAL_THROW(())
- {
- return !(operator == ( rStr1, value ));
- }
-
- template< typename T >
- friend typename internal::CharPtrDetector< T, bool >::Type operator!=( const T& value, const OString& rStr2 ) SAL_THROW(())
- {
- return !(operator == ( value, rStr2 ));
- }
-
- template< typename T >
- friend typename internal::NonConstCharArrayDetector< T, bool >::Type operator!=( T& value, const OString& rStr2 ) SAL_THROW(())
- {
- return !(operator == ( value, rStr2 ));
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- friend typename internal::ConstCharArrayDetector< T, bool >::Type operator!=( const OString& rStr, T& literal ) SAL_THROW(())
- {
- return !( rStr == literal );
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- friend typename internal::ConstCharArrayDetector< T, bool >::Type operator!=( T& literal, const OString& rStr ) SAL_THROW(())
- {
- return !( literal == rStr );
- }
-
- /**
- Returns a hashcode for this string.
-
- @return a hash code value for this object.
-
- @see rtl::OStringHash for convenient use of boost::unordered_map
- */
- sal_Int32 hashCode() const SAL_THROW(())
- {
- return rtl_str_hashCode_WithLength( pData->buffer, pData->length );
- }
-
- /**
- Returns the index within this string of the first occurrence of the
- specified character, starting the search at the specified index.
-
- @param ch character to be located.
- @param fromIndex the index to start the search from.
- The index must be greater or equal than 0
- and less or equal as the string length.
- @return the index of the first occurrence of the character in the
- character sequence represented by this string that is
- greater than or equal to fromIndex, or
- -1 if the character does not occur.
- */
- sal_Int32 indexOf( sal_Char ch, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- sal_Int32 ret = rtl_str_indexOfChar_WithLength( pData->buffer+fromIndex, pData->length-fromIndex, ch );
- return (ret < 0 ? ret : ret+fromIndex);
- }
-
- /**
- Returns the index within this string of the last occurrence of the
- specified character, searching backward starting at the end.
-
- @param ch character to be located.
- @return the index of the last occurrence of the character in the
- character sequence represented by this string, or
- -1 if the character does not occur.
- */
- sal_Int32 lastIndexOf( sal_Char ch ) const SAL_THROW(())
- {
- return rtl_str_lastIndexOfChar_WithLength( pData->buffer, pData->length, ch );
- }
-
- /**
- Returns the index within this string of the last occurrence of the
- specified character, searching backward starting before the specified
- index.
-
- @param ch character to be located.
- @param fromIndex the index before which to start the search.
- @return the index of the last occurrence of the character in the
- character sequence represented by this string that
- is less than fromIndex, or -1
- if the character does not occur before that point.
- */
- sal_Int32 lastIndexOf( sal_Char ch, sal_Int32 fromIndex ) const SAL_THROW(())
- {
- return rtl_str_lastIndexOfChar_WithLength( pData->buffer, fromIndex, ch );
- }
-
- /**
- Returns the index within this string of the first occurrence of the
- specified substring, starting at the specified index.
-
- If str doesn't include any character, always -1 is
- returned. This is also the case, if both strings are empty.
-
- @param str the substring to search for.
- @param fromIndex the index to start the search from.
- @return If the string argument occurs one or more times as a substring
- within this string at the starting index, then the index
- of the first character of the first such substring is
- returned. If it does not occur as a substring starting
- at fromIndex or beyond, -1 is returned.
- */
- sal_Int32 indexOf( const OString & str, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- sal_Int32 ret = rtl_str_indexOfStr_WithLength( pData->buffer+fromIndex, pData->length-fromIndex,
- str.pData->buffer, str.pData->length );
- return (ret < 0 ? ret : ret+fromIndex);
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, sal_Int32 >::Type indexOf( T& literal, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- RTL_STRING_CONST_FUNCTION
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- sal_Int32 n = rtl_str_indexOfStr_WithLength(
- pData->buffer + fromIndex, pData->length - fromIndex, literal, internal::ConstCharArrayDetector< T, void >::size - 1);
- return n < 0 ? n : n + fromIndex;
- }
-
- /**
- Returns the index within this string of the first occurrence of the
- specified substring, starting at the specified index.
-
- If str doesn't include any character, always -1 is
- returned. This is also the case, if both strings are empty.
-
- @param str the substring to search for.
- @param len the length of the substring.
- @param fromIndex the index to start the search from.
- @return If the string argument occurs one or more times as a substring
- within this string at the starting index, then the index
- of the first character of the first such substring is
- returned. If it does not occur as a substring starting
- at fromIndex or beyond, -1 is returned.
-
- @since LibreOffice 3.6
- */
- sal_Int32 indexOfL(char const * str, sal_Int32 len, sal_Int32 fromIndex = 0)
- const SAL_THROW(())
- {
- sal_Int32 n = rtl_str_indexOfStr_WithLength(
- pData->buffer + fromIndex, pData->length - fromIndex, str, len);
- return n < 0 ? n : n + fromIndex;
- }
-
- // This overload is left undefined, to detect calls of indexOfL that
- // erroneously use RTL_CONSTASCII_USTRINGPARAM instead of
- // RTL_CONSTASCII_STRINGPARAM (but would lead to ambiguities on 32 bit
- // platforms):
-#if SAL_TYPES_SIZEOFLONG == 8
- void indexOfL(char const *, sal_Int32, rtl_TextEncoding) const;
-#endif
-
- /**
- Returns the index within this string of the last occurrence of
- the specified substring, searching backward starting at the end.
-
- The returned index indicates the starting index of the substring
- in this string.
- If str doesn't include any character, always -1 is
- returned. This is also the case, if both strings are empty.
-
- @param str the substring to search for.
- @return If the string argument occurs one or more times as a substring
- within this string, then the index of the first character of
- the last such substring is returned. If it does not occur as
- a substring, -1 is returned.
- */
- sal_Int32 lastIndexOf( const OString & str ) const SAL_THROW(())
- {
- return rtl_str_lastIndexOfStr_WithLength( pData->buffer, pData->length,
- str.pData->buffer, str.pData->length );
- }
-
- /**
- Returns the index within this string of the last occurrence of
- the specified substring, searching backward starting before the specified
- index.
-
- The returned index indicates the starting index of the substring
- in this string.
- If str doesn't include any character, always -1 is
- returned. This is also the case, if both strings are empty.
-
- @param str the substring to search for.
- @param fromIndex the index before which to start the search.
- @return If the string argument occurs one or more times as a substring
- within this string before the starting index, then the index
- of the first character of the last such substring is
- returned. Otherwise, -1 is returned.
- */
- sal_Int32 lastIndexOf( const OString & str, sal_Int32 fromIndex ) const SAL_THROW(())
- {
- return rtl_str_lastIndexOfStr_WithLength( pData->buffer, fromIndex,
- str.pData->buffer, str.pData->length );
- }
-
- /**
- Returns a new string that is a substring of this string.
-
- The substring begins at the specified beginIndex. If
- beginIndex is negative or be greater than the length of
- this string, behaviour is undefined.
-
- @param beginIndex the beginning index, inclusive.
- @return the specified substring.
- */
- SAL_WARN_UNUSED_RESULT OString copy( sal_Int32 beginIndex ) const SAL_THROW(())
- {
- rtl_String *pNew = 0;
- rtl_string_newFromSubString( &pNew, pData, beginIndex, getLength() - beginIndex );
- return OString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns a new string that is a substring of this string.
-
- The substring begins at the specified beginIndex and contains count
- characters. If either beginIndex or count are negative,
- or beginIndex + count are greater than the length of this string
- then behaviour is undefined.
-
- @param beginIndex the beginning index, inclusive.
- @param count the number of characters.
- @return the specified substring.
- */
- SAL_WARN_UNUSED_RESULT OString copy( sal_Int32 beginIndex, sal_Int32 count ) const SAL_THROW(())
- {
- rtl_String *pNew = 0;
- rtl_string_newFromSubString( &pNew, pData, beginIndex, count );
- return OString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Concatenates the specified string to the end of this string.
-
- @param str the string that is concatenated to the end
- of this string.
- @return a string that represents the concatenation of this string
- followed by the string argument.
- */
- SAL_WARN_UNUSED_RESULT OString concat( const OString & str ) const SAL_THROW(())
- {
- rtl_String* pNew = 0;
- rtl_string_newConcat( &pNew, pData, str.pData );
- return OString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
-#ifndef RTL_FAST_STRING
- friend OString operator+( const OString & str1, const OString & str2 ) SAL_THROW(())
- {
- return str1.concat( str2 );
- }
-#endif
-
- /**
- Returns a new string resulting from replacing n = count characters
- from position index in this string with newStr.
-
- @param index the replacing index in str.
- The index must be greater or equal as 0 and
- less or equal as the length of the string.
- @param count the count of characters that will replaced
- The count must be greater or equal as 0 and
- less or equal as the length of the string minus index.
- @param newStr the new substring.
- @return the new string.
- */
- SAL_WARN_UNUSED_RESULT OString replaceAt( sal_Int32 index, sal_Int32 count, const OString& newStr ) const SAL_THROW(())
- {
- rtl_String* pNew = 0;
- rtl_string_newReplaceStrAt( &pNew, pData, index, count, newStr.pData );
- return OString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns a new string resulting from replacing all occurrences of
- oldChar in this string with newChar.
-
- If the character oldChar does not occur in the character sequence
- represented by this object, then the string is assigned with
- str.
-
- @param oldChar the old character.
- @param newChar the new character.
- @return a string derived from this string by replacing every
- occurrence of oldChar with newChar.
- */
- SAL_WARN_UNUSED_RESULT OString replace( sal_Char oldChar, sal_Char newChar ) const SAL_THROW(())
- {
- rtl_String* pNew = 0;
- rtl_string_newReplace( &pNew, pData, oldChar, newChar );
- return OString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns a new string resulting from replacing the first occurrence of a
- given substring with another substring.
-
- @param from the substring to be replaced
-
- @param to the replacing substring
-
- @param[in,out] index pointer to a start index; if the pointer is
- non-null: upon entry to the function, its value is the index into the this
- string at which to start searching for the \p from substring, the value
- must be non-negative and not greater than this string's length; upon exit
- from the function its value is the index into this string at which the
- replacement took place or -1 if no replacement took place; if the pointer
- is null, searching always starts at index 0
-
- @since LibreOffice 3.6
- */
- SAL_WARN_UNUSED_RESULT OString replaceFirst(
- OString const & from, OString const & to, sal_Int32 * index = 0) const
- {
- rtl_String * s = 0;
- sal_Int32 i = 0;
- rtl_string_newReplaceFirst(
- &s, pData, from.pData->buffer, from.pData->length,
- to.pData->buffer, to.pData->length, index == 0 ? &i : index);
- return OString(s, SAL_NO_ACQUIRE);
- }
-
- /**
- Returns a new string resulting from replacing all occurrences of a given
- substring with another substring.
-
- Replacing subsequent occurrences picks up only after a given replacement.
- That is, replacing from "xa" to "xx" in "xaa" results in "xxa", not "xxx".
-
- @param from the substring to be replaced
-
- @param to the replacing substring
-
- @since LibreOffice 3.6
- */
- SAL_WARN_UNUSED_RESULT OString replaceAll(OString const & from, OString const & to) const {
- rtl_String * s = 0;
- rtl_string_newReplaceAll(
- &s, pData, from.pData->buffer, from.pData->length,
- to.pData->buffer, to.pData->length);
- return OString(s, SAL_NO_ACQUIRE);
- }
-
- /**
- Converts from this string all ASCII uppercase characters (65-90)
- to ASCII lowercase characters (97-122).
-
- This function can't be used for language specific conversion.
- If the string doesn't contain characters which must be converted,
- then the new string is assigned with str.
-
- @return the string, converted to ASCII lowercase.
- */
- SAL_WARN_UNUSED_RESULT OString toAsciiLowerCase() const SAL_THROW(())
- {
- rtl_String* pNew = 0;
- rtl_string_newToAsciiLowerCase( &pNew, pData );
- return OString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Converts from this string all ASCII lowercase characters (97-122)
- to ASCII uppercase characters (65-90).
-
- This function can't be used for language specific conversion.
- If the string doesn't contain characters which must be converted,
- then the new string is assigned with str.
-
- @return the string, converted to ASCII uppercase.
- */
- SAL_WARN_UNUSED_RESULT OString toAsciiUpperCase() const SAL_THROW(())
- {
- rtl_String* pNew = 0;
- rtl_string_newToAsciiUpperCase( &pNew, pData );
- return OString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns a new string resulting from removing white space from both ends
- of the string.
-
- All characters that have codes less than or equal to
- 32 (the space character) are considered to be white space.
- If the string doesn't contain white spaces at both ends,
- then the new string is assigned with str.
-
- @return the string, with white space removed from the front and end.
- */
- SAL_WARN_UNUSED_RESULT OString trim() const SAL_THROW(())
- {
- rtl_String* pNew = 0;
- rtl_string_newTrim( &pNew, pData );
- return OString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns a token in the string.
-
- Example:
- sal_Int32 nIndex = 0;
- do
- {
- ...
- OString aToken = aStr.getToken( 0, ';', nIndex );
- ...
- }
- while ( nIndex >= 0 );
-
- @param token the number of the token to return.
- @param cTok the character which seperate the tokens.
- @param index the position at which the token is searched in the
- string.
- The index must not be greater thanthe length of the
- string.
- This param is set to the position of the
- next token or to -1, if it is the last token.
- @return the token; if either token or index is negative, an empty token
- is returned (and index is set to -1)
- */
- OString getToken( sal_Int32 token, sal_Char cTok, sal_Int32& index ) const SAL_THROW(())
- {
- rtl_String * pNew = 0;
- index = rtl_string_getToken( &pNew, pData, token, cTok, index );
- return OString( pNew, (DO_NOT_ACQUIRE *)0 );
- }
-
- /**
- Returns a token from the string.
-
- The same as getToken(sal_Int32, sal_Char, sal_Int32 &), but always passing
- in 0 as the start index in the third argument.
-
- @param count the number of the token to return, starting with 0
- @param separator the character which separates the tokens
-
- @return the given token, or an empty string
-
- @since LibreOffice 3.6
- */
- OString getToken(sal_Int32 count, char separator) const {
- sal_Int32 n = 0;
- return getToken(count, separator, n);
- }
-
- /**
- Returns the Boolean value from this string.
-
- This function can't be used for language specific conversion.
-
- @return sal_True, if the string is 1 or "True" in any ASCII case.
- sal_False in any other case.
- */
- sal_Bool toBoolean() const SAL_THROW(())
- {
- return rtl_str_toBoolean( pData->buffer );
- }
-
- /**
- Returns the first character from this string.
-
- @return the first character from this string or 0, if this string
- is emptry.
- */
- sal_Char toChar() const SAL_THROW(())
- {
- return pData->buffer[0];
- }
-
- /**
- Returns the int32 value from this string.
-
- This function can't be used for language specific conversion.
-
- @param radix the radix (between 2 and 36)
- @return the int32 represented from this string.
- 0 if this string represents no number or one of too large
- magnitude.
- */
- sal_Int32 toInt32( sal_Int16 radix = 10 ) const SAL_THROW(())
- {
- return rtl_str_toInt32( pData->buffer, radix );
- }
-
- /**
- Returns the int64 value from this string.
-
- This function can't be used for language specific conversion.
-
- @param radix the radix (between 2 and 36)
- @return the int64 represented from this string.
- 0 if this string represents no number or one of too large
- magnitude.
- */
- sal_Int64 toInt64( sal_Int16 radix = 10 ) const SAL_THROW(())
- {
- return rtl_str_toInt64( pData->buffer, radix );
- }
-
- /**
- Returns the uint64 value from this string.
-
- This function can't be used for language specific conversion.
-
- @param radix the radix (between 2 and 36)
- @return the uint64 represented from this string.
- 0 if this string represents no number or one of too large
- magnitude.
-
- @since LibreOffice 4.1
- */
- sal_uInt64 toUInt64( sal_Int16 radix = 10 ) const SAL_THROW(())
- {
- return rtl_str_toUInt64( pData->buffer, radix );
- }
-
- /**
- Returns the float value from this string.
-
- This function can't be used for language specific conversion.
-
- @return the float represented from this string.
- 0.0 if this string represents no number.
- */
- float toFloat() const SAL_THROW(())
- {
- return rtl_str_toFloat( pData->buffer );
- }
-
- /**
- Returns the double value from this string.
-
- This function can't be used for language specific conversion.
-
- @return the double represented from this string.
- 0.0 if this string represents no number.
- */
- double toDouble() const SAL_THROW(())
- {
- return rtl_str_toDouble( pData->buffer );
- }
-
- /**
- Returns the string representation of the integer argument.
-
- This function can't be used for language specific conversion.
-
- @param i an integer value
- @param radix the radix (between 2 and 36)
- @return a string with the string representation of the argument.
- @since LibreOffice 4.1
- */
- static OString number( int i, sal_Int16 radix = 10 )
- {
- return number( static_cast< long long >( i ), radix );
- }
- /// @overload
- /// @since LibreOffice 4.1
- static OString number( unsigned int i, sal_Int16 radix = 10 )
- {
- return number( static_cast< unsigned long long >( i ), radix );
- }
- /// @overload
- /// @since LibreOffice 4.1
- static OString number( long i, sal_Int16 radix = 10 )
- {
- return number( static_cast< long long >( i ), radix );
- }
- /// @overload
- /// @since LibreOffice 4.1
- static OString number( unsigned long i, sal_Int16 radix = 10 )
- {
- return number( static_cast< unsigned long long >( i ), radix );
- }
- /// @overload
- /// @since LibreOffice 4.1
- static OString number( long long ll, sal_Int16 radix = 10 )
- {
- sal_Char aBuf[RTL_STR_MAX_VALUEOFINT64];
- rtl_String* pNewData = 0;
- rtl_string_newFromStr_WithLength( &pNewData, aBuf, rtl_str_valueOfInt64( aBuf, ll, radix ) );
- return OString( pNewData, (DO_NOT_ACQUIRE*)0 );
- }
- /// @overload
- /// @since LibreOffice 4.1
- static OString number( unsigned long long ll, sal_Int16 radix = 10 )
- {
- sal_Char aBuf[RTL_STR_MAX_VALUEOFUINT64];
- rtl_String* pNewData = 0;
- rtl_string_newFromStr_WithLength( &pNewData, aBuf, rtl_str_valueOfUInt64( aBuf, ll, radix ) );
- return OString( pNewData, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns the string representation of the float argument.
-
- This function can't be used for language specific conversion.
-
- @param f a float.
- @return a string with the string representation of the argument.
- @since LibreOffice 4.1
- */
- static OString number( float f )
- {
- sal_Char aBuf[RTL_STR_MAX_VALUEOFFLOAT];
- rtl_String* pNewData = 0;
- rtl_string_newFromStr_WithLength( &pNewData, aBuf, rtl_str_valueOfFloat( aBuf, f ) );
- return OString( pNewData, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns the string representation of the double argument.
-
- This function can't be used for language specific conversion.
-
- @param d a double.
- @return a string with the string representation of the argument.
- @since LibreOffice 4.1
- */
- static OString number( double d )
- {
- sal_Char aBuf[RTL_STR_MAX_VALUEOFDOUBLE];
- rtl_String* pNewData = 0;
- rtl_string_newFromStr_WithLength( &pNewData, aBuf, rtl_str_valueOfDouble( aBuf, d ) );
- return OString( pNewData, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns the string representation of the sal_Bool argument.
-
- If the sal_Bool is true, the string "true" is returned.
- If the sal_Bool is false, the string "false" is returned.
- This function can't be used for language specific conversion.
-
- @param b a sal_Bool.
- @return a string with the string representation of the argument.
- @deprecated use boolean()
- */
- SAL_DEPRECATED_INTERNAL("use boolean()") static OString valueOf( sal_Bool b ) SAL_THROW(())
- {
- return boolean(b);
- }
-
- /**
- Returns the string representation of the boolean argument.
-
- If the argument is true, the string "true" is returned.
- If the argument is false, the string "false" is returned.
- This function can't be used for language specific conversion.
-
- @param b a bool.
- @return a string with the string representation of the argument.
- @since LibreOffice 4.1
- */
- static OString boolean( bool b ) SAL_THROW(())
- {
- sal_Char aBuf[RTL_STR_MAX_VALUEOFBOOLEAN];
- rtl_String* pNewData = 0;
- rtl_string_newFromStr_WithLength( &pNewData, aBuf, rtl_str_valueOfBoolean( aBuf, b ) );
- return OString( pNewData, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns the string representation of the char argument.
-
- @param c a character.
- @return a string with the string representation of the argument.
- @deprecated use operator, function or constructor taking char or sal_Unicode argument
- */
- SAL_DEPRECATED_INTERNAL("convert to OString or use directly") static OString valueOf( sal_Char c ) SAL_THROW(())
- {
- return OString( &c, 1 );
- }
-
- /**
- Returns the string representation of the int argument.
-
- This function can't be used for language specific conversion.
-
- @param i a int32.
- @param radix the radix (between 2 and 36)
- @return a string with the string representation of the argument.
- @deprecated use number()
- */
- SAL_DEPRECATED_INTERNAL("use number()") static OString valueOf( sal_Int32 i, sal_Int16 radix = 10 ) SAL_THROW(())
- {
- return number( i, radix );
- }
-
- /**
- Returns the string representation of the long argument.
-
- This function can't be used for language specific conversion.
-
- @param ll a int64.
- @param radix the radix (between 2 and 36)
- @return a string with the string representation of the argument.
- @deprecated use number()
- */
- SAL_DEPRECATED_INTERNAL("use number()") static OString valueOf( sal_Int64 ll, sal_Int16 radix = 10 ) SAL_THROW(())
- {
- return number( ll, radix );
- }
-
- /**
- Returns the string representation of the float argument.
-
- This function can't be used for language specific conversion.
-
- @param f a float.
- @return a string with the string representation of the argument.
- @deprecated use number()
- */
- SAL_DEPRECATED_INTERNAL("use number()") static OString valueOf( float f ) SAL_THROW(())
- {
- return number(f);
- }
-
- /**
- Returns the string representation of the double argument.
-
- This function can't be used for language specific conversion.
-
- @param d a double.
- @return a string with the string representation of the argument.
- @deprecated use number()
- */
- SAL_DEPRECATED_INTERNAL("use number()") static OString valueOf( double d ) SAL_THROW(())
- {
- return number(d);
- }
-
-};
-
-/* ======================================================================= */
-
-#ifdef RTL_FAST_STRING
-/**
-A simple wrapper around string literal. It is usually not necessary to use, can
-be mostly used to force OString operator+ working with operands that otherwise would
-not trigger it.
-
-This class is not part of public API and is meant to be used only in LibreOffice code.
-@since LibreOffice 4.0
-*/
-struct SAL_WARN_UNUSED OStringLiteral
-{
- template< int N >
- OStringLiteral( const char (&str)[ N ] ) : size( N - 1 ), data( str ) { assert( strlen( str ) == N - 1 ); }
- int size;
- const char* data;
-};
-
-/**
- @internal
-*/
-template<>
-struct ToStringHelper< OString >
- {
- static int length( const OString& s ) { return s.getLength(); }
- static char* addData( char* buffer, const OString& s ) { return addDataHelper( buffer, s.getStr(), s.getLength()); }
- static const bool allowOStringConcat = true;
- static const bool allowOUStringConcat = false;
- };
-
-/**
- @internal
-*/
-template<>
-struct ToStringHelper< OStringLiteral >
- {
- static int length( const OStringLiteral& str ) { return str.size; }
- static char* addData( char* buffer, const OStringLiteral& str ) { return addDataHelper( buffer, str.data, str.size ); }
- static const bool allowOStringConcat = true;
- static const bool allowOUStringConcat = false;
- };
-
-/**
- @internal
-*/
-template< typename charT, typename traits, typename T1, typename T2 >
-inline std::basic_ostream<charT, traits> & operator <<(
- std::basic_ostream<charT, traits> & stream, const OStringConcat< T1, T2 >& concat)
-{
- return stream << OString( concat );
-}
-#else
-// non-RTL_FAST_CODE needs this to compile
-typedef OString OStringLiteral;
-#endif
-
-
-/** A helper to use OStrings with hash maps.
-
- Instances of this class are unary function objects that can be used as
- hash function arguments to boost::unordered_map and similar constructs.
- */
-struct OStringHash
-{
- /** Compute a hash code for a string.
-
- @param rString
- a string.
-
- @return
- a hash code for the string. This hash code should not be stored
- persistently, as its computation may change in later revisions.
- */
- size_t operator()( const OString& rString ) const
- { return (size_t)rString.hashCode(); }
-};
-
-/* ======================================================================= */
-
-/**
- Support for rtl::OString in std::ostream (and thus in
- CPPUNIT_ASSERT or SAL_INFO macros, for example).
-
- @since LibreOffice 4.0
- */
-template< typename charT, typename traits > std::basic_ostream<charT, traits> &
-operator <<(
- std::basic_ostream<charT, traits> & stream, OString const & string)
-{
- return stream << string.getStr();
- // best effort; potentially loses data due to embedded null characters
-}
-
-} /* Namespace */
-
-#ifdef RTL_STRING_UNITTEST
-namespace rtl
-{
-typedef rtlunittest::OString OString;
-}
-#undef RTL_STRING_CONST_FUNCTION
-#endif
-
-#ifdef RTL_USING
-using ::rtl::OString;
-using ::rtl::OStringHash;
-using ::rtl::OStringLiteral;
-#endif
-
-#endif /* _RTL_STRING_HXX_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/stringconcat.hxx b/sal/inc/rtl/stringconcat.hxx
deleted file mode 100644
index a6e3467209e3..000000000000
--- a/sal/inc/rtl/stringconcat.hxx
+++ /dev/null
@@ -1,284 +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/.
- */
-
-#ifndef RTL_STRINGCONCAT_HXX
-#define RTL_STRINGCONCAT_HXX
-
-#include <rtl/stringutils.hxx>
-
-#include <string.h>
-
-#ifdef RTL_FAST_STRING
-
-#ifdef RTL_STRING_UNITTEST
-#define rtl rtlunittest
-#endif
-namespace rtl
-{
-#ifdef RTL_STRING_UNITTEST
-#undef rtl
-#endif
-
-/*
-Implementation of efficient string concatenation.
-
-The whole system is built around two basic template classes:
-- ToStringHelper< T > - for each T it can give the length of the resulting string representation and can write
- this string representation to a buffer
-- O(U)StringConcat< T1, T2 > - operator+ now, instead of creating O(U)String object, returns only this helper object,
- that keeps a reference to both operator+ operands; only when converted to O(U)String it will actually create
- the resulting string object using ToStringHelper, creating directly the resulting object without any string
- intermediate objects
-As all the code is inline methods, it allows for extensive optimization and will usually result in very effective code
-(even surpassing strlen/strcat and equalling handwritten), while allowing for very easy and intuitive syntax.
-*/
-
-/**
-@internal
-
-Helper class for converting a given type to a string representation.
-*/
-template< typename T >
-struct ToStringHelper
- {
- /// Return length of the string representation of the given object (if not known exactly, it needs to be the maximum).
- static int length( const T& );
- /// Add 8-bit representation of the given object to the given buffer and return position right after the added data.
- static char* addData( char* buffer, const T& );
- /// Add Unicode representation of the given object to the given buffer and return position right after the added data.
- static sal_Unicode* addData( sal_Unicode* buffer, const T& );
- /// If true, T can be used in concatenation resulting in OString.
- static const bool allowOStringConcat = false;
- /// If true, T can be used in concatenation resulting in OUString.
- static const bool allowOUStringConcat = false;
- };
-
-inline
-char* addDataHelper( char* buffer, const char* data, int length )
- {
- memcpy( buffer, data, length );
- return buffer + length;
- }
-
-inline
-sal_Unicode* addDataHelper( sal_Unicode* buffer, const sal_Unicode* data, int length )
- {
- memcpy( buffer, data, length * sizeof( sal_Unicode ));
- return buffer + length;
- }
-
-inline
-sal_Unicode* addDataLiteral( sal_Unicode* buffer, const char* data, int length )
- {
- while( length-- > 0 )
- *buffer++ = *data++;
- return buffer;
- }
-
-inline
-char* addDataCString( char* buffer, const char* str )
- {
- while( *str != '\0' )
- *buffer++ = *str++;
- return buffer;
- }
-
-inline
-sal_Unicode* addDataUString( sal_Unicode* buffer, const sal_Unicode* str )
- {
- while( *str != '\0' )
- *buffer++ = *str++;
- return buffer;
- }
-
-template<>
-struct ToStringHelper< const char* >
- {
- static int length( const char* str ) {
- return sal::static_int_cast<int>(strlen( str ));
- }
- static char* addData( char* buffer, const char* str ) { return addDataCString( buffer, str ); }
- static const bool allowOStringConcat = true;
- static const bool allowOUStringConcat = false;
- };
-
-template<>
-struct ToStringHelper< char* >
- {
- static int length( const char* str ) {
- return sal::static_int_cast<int>(strlen( str ));
- }
- static char* addData( char* buffer, const char* str ) { return addDataCString( buffer, str ); }
- static const bool allowOStringConcat = true;
- static const bool allowOUStringConcat = false;
- };
-
-template< int N >
-struct ToStringHelper< char[ N ] >
- {
- static int length( const char str[ N ] ) {
- return sal::static_int_cast<int>(strlen( str ));
- }
- static char* addData( char* buffer, const char str[ N ] ) { return addDataCString( buffer, str ); }
- static sal_Unicode* addData( sal_Unicode* buffer, const char str[ N ] ) { return addDataLiteral( buffer, str, N - 1 ); }
- static const bool allowOStringConcat = true;
- static const bool allowOUStringConcat = false;
- };
-
-template< int N >
-struct ToStringHelper< const char[ N ] >
- {
- static int length( const char str[ N ] ) { (void)str; assert( strlen( str ) == N - 1 ); return N - 1; }
- static char* addData( char* buffer, const char str[ N ] ) { return addDataHelper( buffer, str, N - 1 ); }
- static sal_Unicode* addData( sal_Unicode* buffer, const char str[ N ] ) { return addDataLiteral( buffer, str, N - 1 ); }
- static const bool allowOStringConcat = true;
- static const bool allowOUStringConcat = true;
- };
-
-/**
-@internal
-
-Objects returned by operator+, instead of OString. These objects (possibly recursively) keep a representation of the whole
-concatenation operation.
-*/
-template< typename T1, typename T2 >
-struct OStringConcat
- {
- public:
- OStringConcat( const T1& left_, const T2& right_ ) : left( left_ ), right( right_ ) {}
- int length() const { return ToStringHelper< T1 >::length( left ) + ToStringHelper< T2 >::length( right ); }
- char* addData( char* buffer ) const { return ToStringHelper< T2 >::addData( ToStringHelper< T1 >::addData( buffer, left ), right ); }
- // NOTE here could be functions that would forward to the "real" temporary OString. Note however that e.g. getStr()
- // is not so simple, as the OString temporary must live long enough (i.e. can't be created here in a function, a wrapper
- // temporary object containing it must be returned instead).
- private:
- const T1& left;
- const T2& right;
- };
-
-/**
-@internal
-
-Objects returned by operator+, instead of OUString. These objects (possibly recursively) keep a representation of the whole
-concatenation operation.
-*/
-template< typename T1, typename T2 >
-struct OUStringConcat
- {
- public:
- OUStringConcat( const T1& left_, const T2& right_ ) : left( left_ ), right( right_ ) {}
- int length() const { return ToStringHelper< T1 >::length( left ) + ToStringHelper< T2 >::length( right ); }
- sal_Unicode* addData( sal_Unicode* buffer ) const { return ToStringHelper< T2 >::addData( ToStringHelper< T1 >::addData( buffer, left ), right ); }
- private:
- const T1& left;
- const T2& right;
- };
-
-template< typename T1, typename T2 >
-struct ToStringHelper< OStringConcat< T1, T2 > >
- {
- static int length( const OStringConcat< T1, T2 >& c ) { return c.length(); }
- static char* addData( char* buffer, const OStringConcat< T1, T2 >& c ) { return c.addData( buffer ); }
- static const bool allowOStringConcat = ToStringHelper< T1 >::allowOStringConcat && ToStringHelper< T2 >::allowOStringConcat;
- static const bool allowOUStringConcat = false;
- };
-
-template< typename T1, typename T2 >
-struct ToStringHelper< OUStringConcat< T1, T2 > >
- {
- static int length( const OUStringConcat< T1, T2 >& c ) { return c.length(); }
- static sal_Unicode* addData( sal_Unicode* buffer, const OUStringConcat< T1, T2 >& c ) { return c.addData( buffer ); }
- static const bool allowOStringConcat = false;
- static const bool allowOUStringConcat = ToStringHelper< T1 >::allowOUStringConcat && ToStringHelper< T2 >::allowOUStringConcat;
- };
-
-template< typename T1, typename T2 >
-inline
-SAL_WARN_UNUSED_RESULT
-typename internal::Enable< OStringConcat< T1, T2 >, ToStringHelper< T1 >::allowOStringConcat && ToStringHelper< T2 >::allowOStringConcat >::Type operator+( const T1& left, const T2& right )
- {
- return OStringConcat< T1, T2 >( left, right );
- }
-
-// char[N] and const char[N] need to be done explicitly, otherwise the compiler likes to treat them the same way for some reason
-template< typename T, int N >
-inline
-SAL_WARN_UNUSED_RESULT
-typename internal::Enable< OStringConcat< T, const char[ N ] >, ToStringHelper< T >::allowOStringConcat >::Type operator+( const T& left, const char (&right)[ N ] )
- {
- return OStringConcat< T, const char[ N ] >( left, right );
- }
-
-template< typename T, int N >
-inline
-SAL_WARN_UNUSED_RESULT
-typename internal::Enable< OStringConcat< const char[ N ], T >, ToStringHelper< T >::allowOStringConcat >::Type operator+( const char (&left)[ N ], const T& right )
- {
- return OStringConcat< const char[ N ], T >( left, right );
- }
-
-template< typename T, int N >
-inline
-SAL_WARN_UNUSED_RESULT
-typename internal::Enable< OStringConcat< T, char[ N ] >, ToStringHelper< T >::allowOStringConcat >::Type operator+( const T& left, char (&right)[ N ] )
- {
- return OStringConcat< T, char[ N ] >( left, right );
- }
-
-template< typename T, int N >
-inline
-SAL_WARN_UNUSED_RESULT
-typename internal::Enable< OStringConcat< char[ N ], T >, ToStringHelper< T >::allowOStringConcat >::Type operator+( char (&left)[ N ], const T& right )
- {
- return OStringConcat< char[ N ], T >( left, right );
- }
-
-template< typename T1, typename T2 >
-inline
-typename internal::Enable< OUStringConcat< T1, T2 >, ToStringHelper< T1 >::allowOUStringConcat && ToStringHelper< T2 >::allowOUStringConcat >::Type operator+( const T1& left, const T2& right )
- {
- return OUStringConcat< T1, T2 >( left, right );
- }
-
-template< typename T1, typename T2 >
-inline
-typename internal::Enable< OUStringConcat< T1, T2 >, ToStringHelper< T1 >::allowOUStringConcat && ToStringHelper< T2 >::allowOUStringConcat && internal::ConstCharArrayDetector< T1, void >::ok >::Type operator+( T1& left, const T2& right )
- {
- return OUStringConcat< T1, T2 >( left, right );
- }
-
-template< typename T1, typename T2 >
-inline
-typename internal::Enable< OUStringConcat< T1, T2 >, ToStringHelper< T1 >::allowOUStringConcat && ToStringHelper< T2 >::allowOUStringConcat && internal::ConstCharArrayDetector< T2, void >::ok >::Type operator+( const T1& left, T2& right )
- {
- return OUStringConcat< T1, T2 >( left, right );
- }
-
-#ifdef RTL_STRING_UNITTEST_CONCAT
-// Special overload to catch the remaining invalid combinations. The helper struct must
-// be used to make this operator+ overload a worse choice than all the existing overloads above.
-struct StringConcatInvalid
- {
- template< typename T >
- StringConcatInvalid( const T& ) {}
- };
-template< typename T >
-inline
-int operator+( const StringConcatInvalid&, const T& )
- {
- rtl_string_unittest_invalid_concat = true;
- return 0; // doesn't matter
- }
-#endif
-
-} // namespace
-
-#endif
-
-#endif
diff --git a/sal/inc/rtl/stringutils.hxx b/sal/inc/rtl/stringutils.hxx
deleted file mode 100644
index fc47a248cde7..000000000000
--- a/sal/inc/rtl/stringutils.hxx
+++ /dev/null
@@ -1,187 +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/.
- */
-
-#ifndef _RTL_STRINGUTILS_HXX_
-#define _RTL_STRINGUTILS_HXX_
-
-#include "sal/config.h"
-
-// Manually defining RTL_DISABLE_FAST_STRING allows to force turning fast string concatenation off
-// (e.g. for debugging).
-#ifndef RTL_DISABLE_FAST_STRING
-// This feature is not part of public API and is meant to be used only internally by LibreOffice.
-#ifdef LIBO_INTERNAL_ONLY
-// Enable fast string concatenation.
-#define RTL_FAST_STRING
-#endif
-#endif
-
-// The unittest uses slightly different code to help check that the proper
-// calls are made. The class is put into a different namespace to make
-// sure the compiler generates a different (if generating also non-inline)
-// copy of the function and does not merge them together. The class
-// is "brought" into the proper rtl namespace by a typedef below.
-#ifdef RTL_STRING_UNITTEST
-#define rtl rtlunittest
-#endif
-
-namespace rtl
-{
-
-#ifdef RTL_STRING_UNITTEST
-#undef rtl
-#endif
-
-namespace internal
-{
-/*
-These templates use SFINAE (Substitution failure is not an error) to help distinguish the various
-plain C string types: char*, const char*, char[N], const char[N], char[] and const char[].
-There are 2 cases:
-1) Only string literal (i.e. const char[N]) is wanted, not any of the others.
- In this case it is necessary to distinguish between const char[N] and char[N], as the latter
- would be automatically converted to the const variant, which is not wanted (not a string literal
- with known size of the content). In this case ConstCharArrayDetector is used to ensure the function
- is called only with const char[N] arguments. There's no other plain C string type overload.
-2) All plain C string types are wanted, and const char[N] needs to be handled differently.
- In this case const char[N] would match const char* argument type (not exactly sure why, but it's
- consistent in all of gcc, clang and msvc). Using a template with a reference to const of the type
- avoids this problem, and CharPtrDetector ensures that the function is called only with char pointer
- arguments. The const in the argument is necessary to handle the case when something is explicitly
- cast to const char*. Additionally (non-const) char[N] needs to be handled, but with the reference
- being const, it would also match const char[N], so another overload with a reference to non-const
- and NonConstCharArrayDetector are used to ensure the function is called only with (non-const) char[N].
-Additionally, char[] and const char[] (i.e. size unknown) are rather tricky. Their usage with 'T&' would
-mean it would be 'char(&)[]', which seems to be invalid. But gcc and clang somehow manage when it is
-a template. while msvc complains about no conversion from char[] to char[1]. And the reference cannot
-be avoided, because 'const char[]' as argument type would match also 'const char[N]'
-So char[] and const char[] should always be used with their contents specified (which automatically
-turns them into char[N] or const char[N]), or char* and const char* should be used.
-*/
-struct Dummy {};
-template< typename T1, typename T2 = void >
-struct CharPtrDetector
-{
- static const bool ok = false;
-};
-template< typename T >
-struct CharPtrDetector< const char*, T >
-{
- typedef T Type;
- static const bool ok = true;
-};
-template< typename T >
-struct CharPtrDetector< char*, T >
-{
- typedef T Type;
- static const bool ok = true;
-};
-
-template< typename T1, typename T2 >
-struct NonConstCharArrayDetector
-{
-};
-template< typename T, int N >
-struct NonConstCharArrayDetector< char[ N ], T >
-{
- typedef T Type;
-};
-#ifdef RTL_STRING_UNITTEST
-// never use, until all compilers handle this
-template< typename T >
-struct NonConstCharArrayDetector< char[], T >
-{
- typedef T Type;
-};
-template< typename T >
-struct NonConstCharArrayDetector< const char[], T >
-{
- typedef T Type;
-};
-#endif
-
-template< typename T1, typename T2 = void >
-struct ConstCharArrayDetector
-{
- static const bool ok = false;
-};
-template< int N, typename T >
-struct ConstCharArrayDetector< const char[ N ], T >
-{
- typedef T Type;
- static const int size = N;
- static const bool ok = true;
-};
-
-// this one is used to rule out only const char[N]
-template< typename T >
-struct ExceptConstCharArrayDetector
-{
- typedef Dummy Type;
-};
-template< int N >
-struct ExceptConstCharArrayDetector< const char[ N ] >
-{
-};
-// this one is used to rule out only const char[N]
-// (const will be brought in by 'const T&' in the function call)
-// msvc needs const char[N] here (not sure whether gcc or msvc
-// are right, it doesn't matter).
-template< typename T >
-struct ExceptCharArrayDetector
-{
- typedef Dummy Type;
-};
-template< int N >
-struct ExceptCharArrayDetector< char[ N ] >
-{
-};
-template< int N >
-struct ExceptCharArrayDetector< const char[ N ] >
-{
-};
-
-template< typename T1, typename T2 = void >
-struct SalUnicodePtrDetector
-{
- static const bool ok = false;
-};
-template< typename T >
-struct SalUnicodePtrDetector< const sal_Unicode*, T >
-{
- typedef T Type;
- static const bool ok = true;
-};
-template< typename T >
-struct SalUnicodePtrDetector< sal_Unicode*, T >
-{
- typedef T Type;
- static const bool ok = true;
-};
-
-// SFINAE helper class
-template< typename T, bool >
-struct Enable
- {
- };
-
-template< typename T >
-struct Enable< T, true >
- {
- typedef T Type;
- };
-
-
-} /* Namespace */
-
-} /* Namespace */
-
-#endif /* _RTL_STRINGUTILS_HXX_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/tencinfo.h b/sal/inc/rtl/tencinfo.h
deleted file mode 100644
index 34ba34f17374..000000000000
--- a/sal/inc/rtl/tencinfo.h
+++ /dev/null
@@ -1,278 +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 _RTL_TENCINFO_H
-#define _RTL_TENCINFO_H
-
-#include "sal/config.h"
-
-#include "rtl/textenc.h"
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// See rtl_TextEncodingInfo.Flags below for documentation on these values:
-#define RTL_TEXTENCODING_INFO_CONTEXT ((sal_uInt32)0x00000001)
-#define RTL_TEXTENCODING_INFO_ASCII ((sal_uInt32)0x00000002)
-#define RTL_TEXTENCODING_INFO_UNICODE ((sal_uInt32)0x00000004)
-#define RTL_TEXTENCODING_INFO_MULTIBYTE ((sal_uInt32)0x00000008)
-#define RTL_TEXTENCODING_INFO_R2L ((sal_uInt32)0x00000010)
-#define RTL_TEXTENCODING_INFO_7BIT ((sal_uInt32)0x00000020)
-#define RTL_TEXTENCODING_INFO_SYMBOL ((sal_uInt32)0x00000040)
-#define RTL_TEXTENCODING_INFO_MIME ((sal_uInt32)0x00000080)
-
-/** Information about a text encoding.
- */
-typedef struct _rtl_TextEncodingInfo
-{
- /** The size (in bytes) of this structure. Should be 12.
- */
- sal_uInt32 StructSize;
-
- /** The minimum number of bytes needed to encode any character in the
- given encoding.
-
- Can be rather meaningless for encodings that encode global state along
- with the characters (e.g., ISO-2022 encodings).
- */
- sal_uInt8 MinimumCharSize;
-
- /** The maximum number of bytes needed to encode any character in the
- given encoding.
-
- Can be rather meaningless for encodings that encode global state along
- with the characters (e.g., ISO-2022 encodings).
- */
- sal_uInt8 MaximumCharSize;
-
- /** The average number of bytes needed to encode a character in the given
- encoding.
- */
- sal_uInt8 AverageCharSize;
-
- /** An unused byte, for padding.
- */
- sal_uInt8 Reserved;
-
- /** Any combination of the RTL_TEXTENCODING_INFO flags.
-
- RTL_TEXTENCODING_INFO_CONTEXT: The encoding uses some mechanism (like
- state-changing byte sequences) to switch between different modes (e.g.,
- to encode multiple character repertoires within the same byte ranges).
-
- Even if an encoding does not have the CONTEXT property, interpretation
- of certain byte values within that encoding can depend on context (e.g.,
- a certain byte value could be either a single-byte character or a
- subsequent byte of a multi-byte character). Likewise, the single shift
- characters (SS2 and SS3) used by some of the EUC encodings (to denote
- that the following bytes constitute a character from another character
- repertoire) do not imply that encodings making use of these characters
- have the CONTEXT property. Examples of encodings that do have the
- CONTEXT property are the ISO-2022 encodings and UTF-7.
-
- RTL_TEXTENCODING_INFO_ASCII: The encoding is a superset of ASCII. More
- specifically, any appearance of a byte in the range 0x20--7F denotes the
- corresponding ASCII character (from SPACE to DELETE); in particular,
- such a byte cannot be part of a multi-byte character. Note that the
- ASCII control codes 0x00--1F are not included here, as they are used for
- special purposes in some encodings.
-
- If an encoding has this property, it is easy to search for occurrences of
- ASCII characters within strings of this encoding---you do not need to
- keep track whether a byte in the range 0x20--7F really represents an
- ASCII character or rather is part of some multi-byte character.
-
- The guarantees when mapping between Unicode and a given encoding with
- the ASCII property are as follows: When mapping from Unicode to the
- given encoding, U+0020--007F map to 0x20--7F (but there can also be
- other Unicode characters mapping into the range 0x20--7F), and when
- mapping from the given encoding to Unicode, 0x20--7F map to U+0020--007F
- (again, there can also be other characters mapping into the range
- U+0020--007F). In particular, this ensures round-trip conversion for
- the ASCII range.
-
- In principle, the ASCII property is orthogonal to the CONTEXT property.
- In practice, however, an encoding that has the ASCII property will most
- likely not also have the CONTEXT property.
-
- RTL_TEXTENCODING_INFO_UNICODE: The encoding is based on the Unicode
- character repertoire.
-
- RTL_TEXTENCODING_INFO_MULTIBYTE: A multi-byte encoding.
-
- RTL_TEXTENCODING_INFO_R2L: An encoding used mainly or exclusively for
- languages written from right to left.
-
- RTL_TEXTENCODING_INFO_7BIT: A 7-bit instead of an 8-bit encoding.
-
- RTL_TEXTENCODING_INFO_SYMBOL: A (generic) encoding for symbol character
- sets.
-
- RTL_TEXTENCODING_INFO_MIME: The encoding is registered as a MIME
- charset.
- */
- sal_uInt32 Flags;
-} rtl_TextEncodingInfo;
-
-/** Determine whether a text encoding uses single octets as basic units of
- information (and can thus be used with the conversion routines in
- rtl/textcvt.h).
-
- @param nEncoding
- Any rtl_TextEncoding value.
-
- @return
- True if the given encoding uses single octets as basic units of
- information, false otherwise.
- */
-SAL_DLLPUBLIC sal_Bool SAL_CALL rtl_isOctetTextEncoding(rtl_TextEncoding nEncoding);
-
-/** Return information about a text encoding.
-
- @param eTextEncoding
- Any rtl_TextEncoding value.
-
- @param pEncInfo
- Returns information about the given encoding. Must not be null, and the
- StructSize member must be set correctly.
-
- @return
- True if information about the given encoding is available, false
- otherwise.
- */
-SAL_DLLPUBLIC sal_Bool SAL_CALL rtl_getTextEncodingInfo(
- rtl_TextEncoding eTextEncoding, rtl_TextEncodingInfo* pEncInfo );
-
-/** Map from a numeric Windows charset to a text encoding.
-
- @param nWinCharset
- Any numeric Windows charset.
-
- @return
- The corresponding rtl_TextEncoding value, or RTL_TEXTENCODING_DONTKNOW if
- no mapping is applicable.
- */
-SAL_DLLPUBLIC rtl_TextEncoding SAL_CALL rtl_getTextEncodingFromWindowsCharset(
- sal_uInt8 nWinCharset );
-
-/** Map from a MIME charset to a text encoding.
-
- @param pMimeCharset
- Any MIME charset string. Must not be null.
-
- @return
- The corresponding rtl_TextEncoding value, or RTL_TEXTENCODING_DONTKNOW if
- no mapping is applicable.
- */
-SAL_DLLPUBLIC rtl_TextEncoding SAL_CALL rtl_getTextEncodingFromMimeCharset(
- const sal_Char* pMimeCharset );
-
-/** Map from a Unix charset to a text encoding.
-
- @param pUnixCharset
- Any Unix charset string. Must not be null.
-
- @return
- The corresponding rtl_TextEncoding value, or RTL_TEXTENCODING_DONTKNOW if
- no mapping is applicable.
- */
-SAL_DLLPUBLIC rtl_TextEncoding SAL_CALL rtl_getTextEncodingFromUnixCharset(
- const sal_Char* pUnixCharset );
-
-/** Map from a text encoding to the best matching numeric Windows charset.
-
- @param eTextEncoding
- Any rtl_TextEncoding value.
-
- @return
- The best matching numeric Windows charset, or 1 if none matches.
- */
-SAL_DLLPUBLIC sal_uInt8 SAL_CALL rtl_getBestWindowsCharsetFromTextEncoding(
- rtl_TextEncoding eTextEncoding );
-
-/** Map from a text encoding to a corresponding MIME charset name, if
- available (see <http://www.iana.org/assignments/character-sets>).
-
- @param nEncoding
- Any rtl_TextEncoding value.
-
- @return
- The (preferred) MIME charset name corresponding to the given encoding, or
- NULL if none is available.
- */
-SAL_DLLPUBLIC char const * SAL_CALL rtl_getMimeCharsetFromTextEncoding(
- rtl_TextEncoding nEncoding );
-
-/** Map from a text encoding to the best matching MIME charset.
-
- @param eTextEncoding
- Any rtl_TextEncoding value.
-
- @return
- The best matching MIME charset string, or null if none matches.
- */
-SAL_DLLPUBLIC const sal_Char* SAL_CALL rtl_getBestMimeCharsetFromTextEncoding(
- rtl_TextEncoding eTextEncoding );
-
-/** Map from a text encoding to the best matching Unix charset.
-
- @param eTextEncoding
- Any rtl_TextEncoding value.
-
- @return
- The best matching Unix charset string, or null if none matches.
- */
-SAL_DLLPUBLIC const sal_Char* SAL_CALL rtl_getBestUnixCharsetFromTextEncoding(
- rtl_TextEncoding eTextEncoding );
-
-/** Map from a Windows code page to a text encoding.
-
- @param nCodePage
- Any Windows code page number.
-
- @return
- The corresponding rtl_TextEncoding value (which will be an octet text
- encoding, see rtl_isOctetTextEncoding), or RTL_TEXTENCODING_DONTKNOW if no
- mapping is applicable.
- */
-SAL_DLLPUBLIC rtl_TextEncoding SAL_CALL
-rtl_getTextEncodingFromWindowsCodePage(sal_uInt32 nCodePage);
-
-/** Map from a text encoding to a Windows code page.
-
- @param nEncoding
- Any rtl_TextEncoding value.
-
- @return
- The corresponding Windows code page number, or 0 if no mapping is
- applicable.
- */
-SAL_DLLPUBLIC sal_uInt32 SAL_CALL
-rtl_getWindowsCodePageFromTextEncoding(rtl_TextEncoding nEncoding);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTL_TENCINFO_H */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/textcvt.h b/sal/inc/rtl/textcvt.h
deleted file mode 100644
index a67b2416ee7a..000000000000
--- a/sal/inc/rtl/textcvt.h
+++ /dev/null
@@ -1,177 +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 _RTL_TEXTCVT_H
-#define _RTL_TEXTCVT_H
-
-#include "sal/config.h"
-
-#include "rtl/textenc.h"
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Documentation about this file can be found at
- <http://udk.openoffice.org/cpp/man/spec/textconversion.html>. */
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-typedef void* rtl_TextToUnicodeConverter;
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-typedef void* rtl_TextToUnicodeContext;
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-SAL_DLLPUBLIC rtl_TextToUnicodeConverter SAL_CALL rtl_createTextToUnicodeConverter( rtl_TextEncoding eTextEncoding );
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_destroyTextToUnicodeConverter( rtl_TextToUnicodeConverter hConverter );
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-SAL_DLLPUBLIC rtl_TextToUnicodeContext SAL_CALL rtl_createTextToUnicodeContext( rtl_TextToUnicodeConverter hConverter );
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_destroyTextToUnicodeContext( rtl_TextToUnicodeConverter hConverter, rtl_TextToUnicodeContext hContext );
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_resetTextToUnicodeContext( rtl_TextToUnicodeConverter hConverter, rtl_TextToUnicodeContext hContext );
-
-#define RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR ((sal_uInt32)0x0001)
-#define RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_IGNORE ((sal_uInt32)0x0002)
-#define RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_MAPTOPRIVATE ((sal_uInt32)0x0003)
-#define RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_DEFAULT ((sal_uInt32)0x0004)
-#define RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR ((sal_uInt32)0x0010)
-#define RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_IGNORE ((sal_uInt32)0x0020)
-#define RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_DEFAULT ((sal_uInt32)0x0030)
-#define RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR ((sal_uInt32)0x0100)
-#define RTL_TEXTTOUNICODE_FLAGS_INVALID_IGNORE ((sal_uInt32)0x0200)
-#define RTL_TEXTTOUNICODE_FLAGS_INVALID_DEFAULT ((sal_uInt32)0x0300)
-#define RTL_TEXTTOUNICODE_FLAGS_FLUSH ((sal_uInt32)0x8000)
-#define RTL_TEXTTOUNICODE_FLAGS_GLOBAL_SIGNATURE 0x10000
- /* Accept any global document signatures (for example, in UTF-8, a leading
- EF BB BF encoding the Byte Order Mark U+FEFF) */
-
-#define RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_MASK ((sal_uInt32)0x000F)
-#define RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_MASK ((sal_uInt32)0x00F0)
-#define RTL_TEXTTOUNICODE_FLAGS_INVALID_MASK ((sal_uInt32)0x0F00)
-
-#define RTL_TEXTTOUNICODE_INFO_ERROR ((sal_uInt32)0x0001)
-#define RTL_TEXTTOUNICODE_INFO_SRCBUFFERTOSMALL ((sal_uInt32)0x0002)
-#define RTL_TEXTTOUNICODE_INFO_DESTBUFFERTOSMALL ((sal_uInt32)0x0004)
-#define RTL_TEXTTOUNICODE_INFO_UNDEFINED ((sal_uInt32)0x0008)
-#define RTL_TEXTTOUNICODE_INFO_MBUNDEFINED ((sal_uInt32)0x0010)
-#define RTL_TEXTTOUNICODE_INFO_INVALID ((sal_uInt32)0x0020)
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-SAL_DLLPUBLIC sal_Size SAL_CALL rtl_convertTextToUnicode(
- rtl_TextToUnicodeConverter hConverter,
- rtl_TextToUnicodeContext hContext,
- const sal_Char* pSrcBuf, sal_Size nSrcBytes,
- sal_Unicode* pDestBuf, sal_Size nDestChars,
- sal_uInt32 nFlags, sal_uInt32* pInfo,
- sal_Size* pSrcCvtBytes );
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-typedef void* rtl_UnicodeToTextConverter;
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-typedef void* rtl_UnicodeToTextContext;
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-SAL_DLLPUBLIC rtl_UnicodeToTextConverter SAL_CALL rtl_createUnicodeToTextConverter( rtl_TextEncoding eTextEncoding );
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_destroyUnicodeToTextConverter( rtl_UnicodeToTextConverter hConverter );
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-SAL_DLLPUBLIC rtl_UnicodeToTextContext SAL_CALL rtl_createUnicodeToTextContext( rtl_UnicodeToTextConverter hConverter );
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_destroyUnicodeToTextContext( rtl_UnicodeToTextConverter hConverter, rtl_UnicodeToTextContext hContext );
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_resetUnicodeToTextContext( rtl_UnicodeToTextConverter hConverter, rtl_UnicodeToTextContext hContext );
-
-#define RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR ((sal_uInt32)0x0001)
-#define RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE ((sal_uInt32)0x0002)
-#define RTL_UNICODETOTEXT_FLAGS_UNDEFINED_0 ((sal_uInt32)0x0003)
-#define RTL_UNICODETOTEXT_FLAGS_UNDEFINED_QUESTIONMARK ((sal_uInt32)0x0004)
-#define RTL_UNICODETOTEXT_FLAGS_UNDEFINED_UNDERLINE ((sal_uInt32)0x0005)
-#define RTL_UNICODETOTEXT_FLAGS_UNDEFINED_DEFAULT ((sal_uInt32)0x0006)
-#define RTL_UNICODETOTEXT_FLAGS_INVALID_ERROR ((sal_uInt32)0x0010)
-#define RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE ((sal_uInt32)0x0020)
-#define RTL_UNICODETOTEXT_FLAGS_INVALID_0 ((sal_uInt32)0x0030)
-#define RTL_UNICODETOTEXT_FLAGS_INVALID_QUESTIONMARK ((sal_uInt32)0x0040)
-#define RTL_UNICODETOTEXT_FLAGS_INVALID_UNDERLINE ((sal_uInt32)0x0050)
-#define RTL_UNICODETOTEXT_FLAGS_INVALID_DEFAULT ((sal_uInt32)0x0060)
-#define RTL_UNICODETOTEXT_FLAGS_UNDEFINED_REPLACE ((sal_uInt32)0x0100)
-#define RTL_UNICODETOTEXT_FLAGS_UNDEFINED_REPLACESTR ((sal_uInt32)0x0200)
-#define RTL_UNICODETOTEXT_FLAGS_PRIVATE_MAPTO0 ((sal_uInt32)0x0400)
-#define RTL_UNICODETOTEXT_FLAGS_NONSPACING_IGNORE ((sal_uInt32)0x0800)
-#define RTL_UNICODETOTEXT_FLAGS_CONTROL_IGNORE ((sal_uInt32)0x1000)
-#define RTL_UNICODETOTEXT_FLAGS_PRIVATE_IGNORE ((sal_uInt32)0x2000)
-#define RTL_UNICODETOTEXT_FLAGS_NOCOMPOSITE ((sal_uInt32)0x4000)
-#define RTL_UNICODETOTEXT_FLAGS_FLUSH ((sal_uInt32)0x8000)
-#define RTL_UNICODETOTEXT_FLAGS_GLOBAL_SIGNATURE 0x10000
- /* Write any global document signatures (for example, in UTF-8, a leading
- EF BB BF encoding the Byte Order Mark U+FEFF) */
-
-#define RTL_UNICODETOTEXT_FLAGS_UNDEFINED_MASK ((sal_uInt32)0x000F)
-#define RTL_UNICODETOTEXT_FLAGS_INVALID_MASK ((sal_uInt32)0x00F0)
-
-#define RTL_UNICODETOTEXT_INFO_ERROR ((sal_uInt32)0x0001)
-#define RTL_UNICODETOTEXT_INFO_SRCBUFFERTOSMALL ((sal_uInt32)0x0002)
-#define RTL_UNICODETOTEXT_INFO_DESTBUFFERTOSMALL ((sal_uInt32)0x0004)
-#define RTL_UNICODETOTEXT_INFO_UNDEFINED ((sal_uInt32)0x0008)
-#define RTL_UNICODETOTEXT_INFO_INVALID ((sal_uInt32)0x0010)
-
-/** see http://udk.openoffice.org/cpp/man/spec/textconversion.html
- */
-SAL_DLLPUBLIC sal_Size SAL_CALL rtl_convertUnicodeToText(
- rtl_UnicodeToTextConverter hConverter,
- rtl_UnicodeToTextContext hContext,
- const sal_Unicode* pSrcBuf, sal_Size nSrcChars,
- sal_Char* pDestBuf, sal_Size nDestBytes,
- sal_uInt32 nFlags, sal_uInt32* pInfo,
- sal_Size* pSrcCvtChars );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTL_TEXTCVT_H */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/textenc.h b/sal/inc/rtl/textenc.h
deleted file mode 100644
index 676f8c23186a..000000000000
--- a/sal/inc/rtl/textenc.h
+++ /dev/null
@@ -1,270 +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 _RTL_TEXTENC_H
-#define _RTL_TEXTENC_H
-
-#ifdef _SOLAR_RSC_INVOKED
-/* Enable resources to use these values, rsc can't handle casts */
-#define RTL_TEXTENC_CAST( val ) (val)
-
-#else /* !_SOLAR_RSC_INVOKED */
-
-#include <sal/types.h>
-
-/** The various supported text encodings.
-
- Possible values include a wide range of single- and multi-byte encodings
- (ranging from RTL_TEXTENCODING_MS_1252 to RTL_TEXTENCODING_GB_18030),
- the ISO 10646 (Unicode) specific encodings RTL_TEXTENCODING_UCS4 and
- RTL_TEXTENCODING_UCS2 (aka RTL_TEXTENCODING_UNICODE), and
- RTL_TEXTENCODING_DONTKNOW to indicate an unknown or missing encoding.
- */
-typedef sal_uInt16 rtl_TextEncoding;
-
-#define RTL_TEXTENC_CAST( val ) ((rtl_TextEncoding) val)
-
-#endif /* _SOLAR_RSC_INVOKED */
-
-#define RTL_TEXTENCODING_DONTKNOW (RTL_TEXTENC_CAST( 0 ))
-#define RTL_TEXTENCODING_MS_1252 (RTL_TEXTENC_CAST( 1 ))
-#define RTL_TEXTENCODING_APPLE_ROMAN (RTL_TEXTENC_CAST( 2 ))
-#define RTL_TEXTENCODING_IBM_437 (RTL_TEXTENC_CAST( 3 ))
-#define RTL_TEXTENCODING_IBM_850 (RTL_TEXTENC_CAST( 4 ))
-#define RTL_TEXTENCODING_IBM_860 (RTL_TEXTENC_CAST( 5 ))
-#define RTL_TEXTENCODING_IBM_861 (RTL_TEXTENC_CAST( 6 ))
-#define RTL_TEXTENCODING_IBM_863 (RTL_TEXTENC_CAST( 7 ))
-#define RTL_TEXTENCODING_IBM_865 (RTL_TEXTENC_CAST( 8 ))
-/* Reserved: RTL_TEXTENCODING_SYSTEM (RTL_TEXTENC_CAST( 9 )) */
-#define RTL_TEXTENCODING_SYMBOL (RTL_TEXTENC_CAST( 10 ))
-#define RTL_TEXTENCODING_ASCII_US (RTL_TEXTENC_CAST( 11 ))
-#define RTL_TEXTENCODING_ISO_8859_1 (RTL_TEXTENC_CAST( 12 ))
-#define RTL_TEXTENCODING_ISO_8859_2 (RTL_TEXTENC_CAST( 13 ))
-#define RTL_TEXTENCODING_ISO_8859_3 (RTL_TEXTENC_CAST( 14 ))
-#define RTL_TEXTENCODING_ISO_8859_4 (RTL_TEXTENC_CAST( 15 ))
-#define RTL_TEXTENCODING_ISO_8859_5 (RTL_TEXTENC_CAST( 16 ))
-#define RTL_TEXTENCODING_ISO_8859_6 (RTL_TEXTENC_CAST( 17 ))
-#define RTL_TEXTENCODING_ISO_8859_7 (RTL_TEXTENC_CAST( 18 ))
-#define RTL_TEXTENCODING_ISO_8859_8 (RTL_TEXTENC_CAST( 19 ))
-#define RTL_TEXTENCODING_ISO_8859_9 (RTL_TEXTENC_CAST( 20 ))
-#define RTL_TEXTENCODING_ISO_8859_14 (RTL_TEXTENC_CAST( 21 ))
-#define RTL_TEXTENCODING_ISO_8859_15 (RTL_TEXTENC_CAST( 22 ))
-#define RTL_TEXTENCODING_IBM_737 (RTL_TEXTENC_CAST( 23 ))
-#define RTL_TEXTENCODING_IBM_775 (RTL_TEXTENC_CAST( 24 ))
-#define RTL_TEXTENCODING_IBM_852 (RTL_TEXTENC_CAST( 25 ))
-#define RTL_TEXTENCODING_IBM_855 (RTL_TEXTENC_CAST( 26 ))
-#define RTL_TEXTENCODING_IBM_857 (RTL_TEXTENC_CAST( 27 ))
-#define RTL_TEXTENCODING_IBM_862 (RTL_TEXTENC_CAST( 28 ))
-#define RTL_TEXTENCODING_IBM_864 (RTL_TEXTENC_CAST( 29 ))
-#define RTL_TEXTENCODING_IBM_866 (RTL_TEXTENC_CAST( 30 ))
-#define RTL_TEXTENCODING_IBM_869 (RTL_TEXTENC_CAST( 31 ))
-#define RTL_TEXTENCODING_MS_874 (RTL_TEXTENC_CAST( 32 ))
-#define RTL_TEXTENCODING_MS_1250 (RTL_TEXTENC_CAST( 33 ))
-#define RTL_TEXTENCODING_MS_1251 (RTL_TEXTENC_CAST( 34 ))
-#define RTL_TEXTENCODING_MS_1253 (RTL_TEXTENC_CAST( 35 ))
-#define RTL_TEXTENCODING_MS_1254 (RTL_TEXTENC_CAST( 36 ))
-#define RTL_TEXTENCODING_MS_1255 (RTL_TEXTENC_CAST( 37 ))
-#define RTL_TEXTENCODING_MS_1256 (RTL_TEXTENC_CAST( 38 ))
-#define RTL_TEXTENCODING_MS_1257 (RTL_TEXTENC_CAST( 39 ))
-#define RTL_TEXTENCODING_MS_1258 (RTL_TEXTENC_CAST( 40 ))
-#define RTL_TEXTENCODING_APPLE_ARABIC (RTL_TEXTENC_CAST( 41 ))
-#define RTL_TEXTENCODING_APPLE_CENTEURO (RTL_TEXTENC_CAST( 42 ))
-#define RTL_TEXTENCODING_APPLE_CROATIAN (RTL_TEXTENC_CAST( 43 ))
-#define RTL_TEXTENCODING_APPLE_CYRILLIC (RTL_TEXTENC_CAST( 44 ))
-#define RTL_TEXTENCODING_APPLE_DEVANAGARI (RTL_TEXTENC_CAST( 45 ))
-#define RTL_TEXTENCODING_APPLE_FARSI (RTL_TEXTENC_CAST( 46 ))
-#define RTL_TEXTENCODING_APPLE_GREEK (RTL_TEXTENC_CAST( 47 ))
-#define RTL_TEXTENCODING_APPLE_GUJARATI (RTL_TEXTENC_CAST( 48 ))
-#define RTL_TEXTENCODING_APPLE_GURMUKHI (RTL_TEXTENC_CAST( 49 ))
-#define RTL_TEXTENCODING_APPLE_HEBREW (RTL_TEXTENC_CAST( 50 ))
-#define RTL_TEXTENCODING_APPLE_ICELAND (RTL_TEXTENC_CAST( 51 ))
-#define RTL_TEXTENCODING_APPLE_ROMANIAN (RTL_TEXTENC_CAST( 52 ))
-#define RTL_TEXTENCODING_APPLE_THAI (RTL_TEXTENC_CAST( 53 ))
-#define RTL_TEXTENCODING_APPLE_TURKISH (RTL_TEXTENC_CAST( 54 ))
-#define RTL_TEXTENCODING_APPLE_UKRAINIAN (RTL_TEXTENC_CAST( 55 ))
-#define RTL_TEXTENCODING_APPLE_CHINSIMP (RTL_TEXTENC_CAST( 56 ))
-#define RTL_TEXTENCODING_APPLE_CHINTRAD (RTL_TEXTENC_CAST( 57 ))
-#define RTL_TEXTENCODING_APPLE_JAPANESE (RTL_TEXTENC_CAST( 58 ))
-#define RTL_TEXTENCODING_APPLE_KOREAN (RTL_TEXTENC_CAST( 59 ))
-#define RTL_TEXTENCODING_MS_932 (RTL_TEXTENC_CAST( 60 ))
-#define RTL_TEXTENCODING_MS_936 (RTL_TEXTENC_CAST( 61 ))
-#define RTL_TEXTENCODING_MS_949 (RTL_TEXTENC_CAST( 62 ))
-#define RTL_TEXTENCODING_MS_950 (RTL_TEXTENC_CAST( 63 ))
-#define RTL_TEXTENCODING_SHIFT_JIS (RTL_TEXTENC_CAST( 64 ))
-#define RTL_TEXTENCODING_GB_2312 (RTL_TEXTENC_CAST( 65 ))
-#define RTL_TEXTENCODING_GBT_12345 (RTL_TEXTENC_CAST( 66 ))
-#define RTL_TEXTENCODING_GBK (RTL_TEXTENC_CAST( 67 ))
-#define RTL_TEXTENCODING_BIG5 (RTL_TEXTENC_CAST( 68 ))
-#define RTL_TEXTENCODING_EUC_JP (RTL_TEXTENC_CAST( 69 ))
-#define RTL_TEXTENCODING_EUC_CN (RTL_TEXTENC_CAST( 70 ))
-#define RTL_TEXTENCODING_EUC_TW (RTL_TEXTENC_CAST( 71 ))
-#define RTL_TEXTENCODING_ISO_2022_JP (RTL_TEXTENC_CAST( 72 ))
-#define RTL_TEXTENCODING_ISO_2022_CN (RTL_TEXTENC_CAST( 73 ))
-#define RTL_TEXTENCODING_KOI8_R (RTL_TEXTENC_CAST( 74 ))
-#define RTL_TEXTENCODING_UTF7 (RTL_TEXTENC_CAST( 75 ))
-#define RTL_TEXTENCODING_UTF8 (RTL_TEXTENC_CAST( 76 ))
-#define RTL_TEXTENCODING_ISO_8859_10 (RTL_TEXTENC_CAST( 77 ))
-#define RTL_TEXTENCODING_ISO_8859_13 (RTL_TEXTENC_CAST( 78 ))
-#define RTL_TEXTENCODING_EUC_KR (RTL_TEXTENC_CAST( 79 ))
-#define RTL_TEXTENCODING_ISO_2022_KR (RTL_TEXTENC_CAST( 80 ))
-#define RTL_TEXTENCODING_JIS_X_0201 (RTL_TEXTENC_CAST( 81 ))
-#define RTL_TEXTENCODING_JIS_X_0208 (RTL_TEXTENC_CAST( 82 ))
-#define RTL_TEXTENCODING_JIS_X_0212 (RTL_TEXTENC_CAST( 83 ))
-#define RTL_TEXTENCODING_MS_1361 (RTL_TEXTENC_CAST( 84 ))
-#define RTL_TEXTENCODING_GB_18030 (RTL_TEXTENC_CAST( 85 ))
-#define RTL_TEXTENCODING_BIG5_HKSCS (RTL_TEXTENC_CAST( 86 ))
-#define RTL_TEXTENCODING_TIS_620 (RTL_TEXTENC_CAST( 87 ))
-#define RTL_TEXTENCODING_KOI8_U (RTL_TEXTENC_CAST( 88 ))
-#define RTL_TEXTENCODING_ISCII_DEVANAGARI (RTL_TEXTENC_CAST( 89 ))
-#define RTL_TEXTENCODING_JAVA_UTF8 (RTL_TEXTENC_CAST( 90 ))
-#define RTL_TEXTENCODING_ADOBE_STANDARD (RTL_TEXTENC_CAST( 91 ))
-#define RTL_TEXTENCODING_ADOBE_SYMBOL (RTL_TEXTENC_CAST( 92 ))
-#define RTL_TEXTENCODING_PT154 (RTL_TEXTENC_CAST( 93 ))
-#define RTL_TEXTENCODING_ADOBE_DINGBATS (RTL_TEXTENC_CAST( 94 ))
-/* ATTENTION! Whenever some encoding is added here, make sure to update
- * rtl_isOctetTextEncoding in tencinfo.c.
- */
-
-#define RTL_TEXTENCODING_USER_START (RTL_TEXTENC_CAST( 0x8000 ))
-#define RTL_TEXTENCODING_USER_END (RTL_TEXTENC_CAST( 0xEFFF ))
-
-#define RTL_TEXTENCODING_UCS4 (RTL_TEXTENC_CAST( 0xFFFE ))
-#define RTL_TEXTENCODING_UCS2 (RTL_TEXTENC_CAST( 0xFFFF ))
-#define RTL_TEXTENCODING_UNICODE RTL_TEXTENCODING_UCS2
-
-/****** Overview over the TextEncodings *****
-# Arabic (Apple Macintosh) RTL_TEXTENCODING_APPLE_ARABIC
-Arabic (DOS/OS2-864) RTL_TEXTENCODING_IBM_864
-Arabic (ISO-8859-6) RTL_TEXTENCODING_ISO_8859_6
-Arabic (Windows-1256) RTL_TEXTENCODING_MS_1256
-
-Baltic (DOS/OS2-775) RTL_TEXTENCODING_IBM_775
-Baltic (ISO-8859-4) RTL_TEXTENCODING_ISO_8859_4
-Baltic (Windows-1257) RTL_TEXTENCODING_MS_1257
-
-Central European (Apple Macintosh) RTL_TEXTENCODING_APPLE_CENTEURO
-Central European (Apple Macintosh/Croatian) RTL_TEXTENCODING_APPLE_CROATIAN
-Central European (Apple Macintosh/Romanian) RTL_TEXTENCODING_APPLE_ROMANIAN
-Central European (DOS/OS2-852) RTL_TEXTENCODING_IBM_852
-Central European (ISO-8859-2) RTL_TEXTENCODING_ISO_8859_2
-Central European (ISO-8859-10) RTL_TEXTENCODING_ISO_8859_10
-Central European (ISO-8859-13) RTL_TEXTENCODING_ISO_8859_13
-Central European (Windows-1250/WinLatin 2) RTL_TEXTENCODING_MS_1250
-
-Chinese Simplified (Apple Macintosh) RTL_TEXTENCODING_APPLE_CHINSIMP
-Chinese Simplified (EUC-CN) RTL_TEXTENCODING_EUC_CN
-Chinese Simplified (GB-2312) RTL_TEXTENCODING_GB_2312
-Chinese Simplified (GBK/GB-2312-80) RTL_TEXTENCODING_GBK
-# Chinese Simplified (ISO-2022-CN) RTL_TEXTENCODING_ISO_2022_CN
-Chinese Simplified (Windows-936) RTL_TEXTENCODING_MS_936
-# Chinese Simplified (GB-18030) RTL_TEXTENCODING_GB_18030
-
-Chinese Traditional (Apple Macintosh) RTL_TEXTENCODING_APPLE_CHINTRAD
-Chinese Traditional (BIG5) RTL_TEXTENCODING_BIG5
-# Chinese Traditional (EUC-TW) RTL_TEXTENCODING_EUC_TW
-Chinese Traditional (GBT-12345) RTL_TEXTENCODING_GBT_12345
-Chinese Traditional (Windows-950) RTL_TEXTENCODING_MS_950
-Chinese Traditional (BIG5-HKSCS) RTL_TEXTENCODING_BIG5_HKSCS
-
-Cyrillic (Apple Macintosh) RTL_TEXTENCODING_APPLE_CYRILLIC
-Cyrillic (Apple Macintosh/Ukrainian) RTL_TEXTENCODING_APPLE_UKRAINIAN
-Cyrillic (DOS/OS2-855) RTL_TEXTENCODING_IBM_855
-Cyrillic (DOS/OS2-866/Russian) RTL_TEXTENCODING_IBM_866
-Cyrillic (ISO-8859-5) RTL_TEXTENCODING_ISO_8859_5
-Cyrillic (KOI8-R) RTL_TEXTENCODING_KOI8_R
-Cyrillic (KOI8-U) RTL_TEXTENCODING_KOI8_U
-Cyrillic (Windows-1251) RTL_TEXTENCODING_MS_1251
-
-Greek (Apple Macintosh) RTL_TEXTENCODING_APPLE_GREEK
-Greek (DOS/OS2-737) RTL_TEXTENCODING_IBM_737
-Greek (DOS/OS2-869/Modern) RTL_TEXTENCODING_IBM_869
-Greek (ISO-8859-7) RTL_TEXTENCODING_ISO_8859_7
-Greek (Windows-1253) RTL_TEXTENCODING_MS_1253
-
-# Hebrew (Apple Macintosh) RTL_TEXTENCODING_APPLE_HEBREW
-Hebrew (DOS/OS2-862) RTL_TEXTENCODING_IBM_862
-Hebrew (ISO-8859-8) RTL_TEXTENCODING_ISO_8859_8
-Hebrew (Windows-1255) RTL_TEXTENCODING_MS_1255
-
-Korean (Apple Macintosh) RTL_TEXTENCODING_APPLE_KOREAN
-Korean (EUC-KR) RTL_TEXTENCODING_EUC_KR
-# Korean (ISO-2022-KR) RTL_TEXTENCODING_ISO_2022_KR
-Korean (Windows-Wansung-949) RTL_TEXTENCODING_MS_949
-Korean (Windows-Johab-1361) RTL_TEXTENCODING_MS_1361
-
-Latin 3 (ISO-8859-3) RTL_TEXTENCODING_ISO_8859_3
-
-Indian (ISCII Devanagari) RTL_TEXTENCODING_ISCII_DEVANAGARI
-
-Japanese (Apple Macintosh) RTL_TEXTENCODING_APPLE_JAPANESE
-Japanese (EUC-JP) RTL_TEXTENCODING_EUC_JP
-# Japanese (ISO-2022-JP) RTL_TEXTENCODING_ISO_2022_JP
-Japanese (Shift-JIS) RTL_TEXTENCODING_SHIFT_JIS
-Japanese (Windows-932) RTL_TEXTENCODING_MS_932
-
-Symbol RTL_TEXTENCODING_SYMBOL
-
-# Thai (Apple Macintosh) RTL_TEXTENCODING_APPLE_THAI
-Thai (Dos/Windows-874) RTL_TEXTENCODING_MS_874
-Thai (TIS 620) RTL_TEXTENCODING_TIS_620
-
-Turkish (Apple Macintosh) RTL_TEXTENCODING_APPLE_TURKISH
-Turkish (DOS/OS2-857) RTL_TEXTENCODING_IBM_857
-Turkish (ISO-8859-9) RTL_TEXTENCODING_ISO_8859_9
-Turkish (Windows-1254) RTL_TEXTENCODING_MS_1254
-
-Unicode (UTF-7) RTL_TEXTENCODING_UTF7
-Unicode (UTF-8) RTL_TEXTENCODING_UTF8
-Unicode (Java's modified UTF-8) RTL_TEXTENCODING_JAVA_UTF8
-
-Vietnamese (Windows-1258) RTL_TEXTENCODING_MS_1258
-
-Western (Apple Macintosh) RTL_TEXTENCODING_APPLE_ROMAN
-Western (Apple Macintosh/Icelandic) RTL_TEXTENCODING_APPLE_ICELAND
-Western (ASCII/US) RTL_TEXTENCODING_ASCII_US
-Western (DOS/OS2-437/US) RTL_TEXTENCODING_IBM_437
-Western (DOS/OS2-850/International) RTL_TEXTENCODING_IBM_850
-Western (DOS/OS2-860/Portugese) RTL_TEXTENCODING_IBM_860
-Western (DOS/OS2-861/Icelandic) RTL_TEXTENCODING_IBM_861
-Western (DOS/OS2-863/Canadian-French) RTL_TEXTENCODING_IBM_863
-Western (DOS/OS2-865/Nordic) RTL_TEXTENCODING_IBM_865
-Western (ISO-8859-1) RTL_TEXTENCODING_ISO_8859_1
-Western (ISO-8859-14) RTL_TEXTENCODING_ISO_8859_14
-Western (ISO-8859-15/EURO) RTL_TEXTENCODING_ISO_8859_15
-Western (Window-1252/WinLatin 1) RTL_TEXTENCODING_MS_1252
-
-Not known and currently not supported
-# RTL_TEXTENCODING_APPLE_DEVANAGARI
-# RTL_TEXTENCODING_APPLE_FARSI
-# RTL_TEXTENCODING_APPLE_GUJARATI
-# RTL_TEXTENCODING_APPLE_GURMUKHI
-
-Only for internal implementations and not useful for user interface.
-These encodings are not used for text encodings, only used for
-font-/textoutput encodings.
-Japanese (JIS 0201) RTL_TEXTENCODING_JISX_0201
-Japanese (JIS 0208) RTL_TEXTENCODING_JISX_0208
-Japanese (JIS 0212) RTL_TEXTENCODING_JISX_0212
-
-# Currently not implemented
-*/
-
-#endif /* _RTL_TEXTENC_H */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/unload.h b/sal/inc/rtl/unload.h
deleted file mode 100644
index 118b5cce9127..000000000000
--- a/sal/inc/rtl/unload.h
+++ /dev/null
@@ -1,92 +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 _RTL_UNLOAD_H_
-#define _RTL_UNLOAD_H_
-
-#include "sal/config.h"
-
-#include "osl/interlck.h"
-#include "osl/time.h"
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-/** @file
- Backwards-compatibility remainders of a removed library unloading feature.
-*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/** Backwards-compatibility remainder of a removed library unloading feature.
-
- @deprecated Do not use.
-*/
-typedef struct _rtl_ModuleCount
-{
- void ( SAL_CALL * acquire ) ( struct _rtl_ModuleCount * that );
- void ( SAL_CALL * release ) ( struct _rtl_ModuleCount * that );
-}rtl_ModuleCount;
-
-/** Backwards-compatibility remainder of a removed library unloading feature.
-
- @deprecated Do not use.
-*/
-#define MODULE_COUNT_INIT \
-{ {rtl_moduleCount_acquire,rtl_moduleCount_release}, rtl_moduleCount_canUnload, 0, {0, 0}}
-
-/** Backwards-compatibility remainder of a removed library unloading feature.
-
- @deprecated Do not use.
-*/
-typedef struct _rtl_StandardModuleCount
-{
- rtl_ModuleCount modCnt;
- sal_Bool ( *canUnload ) ( struct _rtl_StandardModuleCount* a, TimeValue* libUnused);
- oslInterlockedCount counter;
- TimeValue unusedSince;
-} rtl_StandardModuleCount;
-
-/** Backwards-compatibility remainder of a removed library unloading feature.
-
- @deprecated Do not use.
-*/
-SAL_DLLPUBLIC void rtl_moduleCount_acquire(rtl_ModuleCount * that );
-
-/** Backwards-compatibility remainder of a removed library unloading feature.
-
- @deprecated Do not use.
-*/
-SAL_DLLPUBLIC void rtl_moduleCount_release( rtl_ModuleCount * that );
-
-/** Backwards-compatibility remainder of a removed library unloading feature.
-
- @deprecated Do not use.
-*/
-SAL_DLLPUBLIC sal_Bool rtl_moduleCount_canUnload( rtl_StandardModuleCount * that, TimeValue* libUnused);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/uri.h b/sal/inc/rtl/uri.h
deleted file mode 100644
index 251af025ef82..000000000000
--- a/sal/inc/rtl/uri.h
+++ /dev/null
@@ -1,352 +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 _RTL_URI_H_
-#define _RTL_URI_H_
-
-#include "sal/config.h"
-
-#include "rtl/textenc.h"
-#include "rtl/ustring.h"
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#if defined __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/** Various predefined URI 'char classes.'
-
- A 'char class' defines which (ASCII) characters can be written 'as they
- are' in a part of a Uri, and which characters have to be written using
- escape sequences ('%' followed by two hex digits). Characters outside
- the ASCII range are always written using escape sequences.
-
- If there are other frequently used char classes, they can be added to
- this enumeration; the function rtl_getUriCharClass() has to be adapted
- then, too.
- */
-typedef enum
-{
- /** The empty char class.
-
- All characters are written using escape sequences.
- */
- rtl_UriCharClassNone,
-
- /** The RFC 2732 @<uric> char class.
-
- @verbatim
- The 'valid' characters are !$&'()*+,-./:;=?@[]_~ plus digits and
- letters.
- @endverbatim
- */
- rtl_UriCharClassUric,
-
- /** The RFC 2396 @<uric_no_slash> char class.
-
- @verbatim
- The 'valid' characters are !$&'()*+,-.:;=?@_~ plus digits and letters.
- @endverbatim
- */
- rtl_UriCharClassUricNoSlash,
-
- /** The RFC 2396 @<rel_segment> char class.
-
- @verbatim
- The 'valid' characters are !$&'()*+,-.;=@_~ plus digits and letters.
- @endverbatim
- */
- rtl_UriCharClassRelSegment,
-
- /** The RFC 2396 @<reg_name> char class.
-
- @verbatim
- The 'valid' characters are !$&'()*+,-.:;=@_~ plus digits and letters.
- @endverbatim
- */
- rtl_UriCharClassRegName,
-
- /** The RFC 2396 @<userinfo> char class.
-
- @verbatim
- The 'valid' characters are !$&'()*+,-.:;=_~ plus digits and letters.
- @endverbatim
- */
- rtl_UriCharClassUserinfo,
-
- /** The RFC 2396 @<pchar> char class.
-
- @verbatim
- The 'valid' characters are !$&'()*+,-.:=@_~ plus digits and letters.
- @endverbatim
- */
- rtl_UriCharClassPchar,
-
- /** The char class for the values of uno URL parameters.
-
- @verbatim
- The 'valid' characters are !$&'()*+-./:?@_~ plus digits and letters.
- @endverbatim
- */
- rtl_UriCharClassUnoParamValue,
-
- rtl_UriCharClass_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-}
-rtl_UriCharClass;
-
-/** The mechanism describing how escape sequences in the input of
- rtl_uriEncode() are handled.
- */
-typedef enum
-{
- /** The special meaning of '%' is ignored (i.e., there are by definition
- no escape sequences in the input).
-
- This mechanism is useful to encode user input as part of a URI (e.g.,
- the user-supplied password in an ftp URL---'%20abcde' is a valid
- password, so do not assume that the '%20' is an escaped space).
- */
- rtl_UriEncodeIgnoreEscapes,
-
- /** All escape sequences ('%' followed by two hex digits) are kept intact,
- even if they represent characters that need not be escaped or if they
- do not even map to characters in the given charset.
-
- This mechanism is useful when passing on complete URIs more or less
- unmodified (e.g., within an HTTP proxy): missing escape sequences are
- added, but existing escape sequences are not touched (except that any
- lower case hex digits are replaced by upper case hex digits).
- */
- rtl_UriEncodeKeepEscapes,
-
- /** All escape sequences ('%' followed by two hex digits) are resolved in
- a first step; only those that represent characters that need to be
- escaped are kept intact.
-
- This mechanism is useful to properly encode complete URIs entered by
- the user: the URI is brought into a 'canonic form,' but care is taken
- not to damage (valid) escape sequences the (careful) user already
- entered as such.
- */
- rtl_UriEncodeCheckEscapes,
-
- /** Like rtl_UriEncodeIgnoreEscapes, but indicating failure when converting
- unmappable characters.
-
- @since UDK 3.2.0
- */
- rtl_UriEncodeStrict,
-
- /** Like rtl_UriEncodeKeepEscapes, but indicating failure when converting
- unmappable characters.
-
- @since UDK 3.2.7
- */
- rtl_UriEncodeStrictKeepEscapes,
-
- rtl_UriEncode_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-}
-rtl_UriEncodeMechanism;
-
-/** The mechanism describing how rtl_uriDecode() translates (part of) a URI
- into a Unicode string.
- */
-typedef enum
-{
- /** The text is returned completely unmodified.
- */
- rtl_UriDecodeNone,
-
- /** The text is returned in the form of an IURI (cf.
- draft-masinter-url-i18n-05.txt).
-
- All escape sequences representing ASCII characters (%00--%7F) are
- kept, all other escape sequences are interpreted as UTF-8 characters
- and translated to Unicode, if possible.
- */
- rtl_UriDecodeToIuri,
-
- /** The text is decoded.
-
- All escape sequences representing characters from the given charset
- are decoded and translated to Unicode, if possible.
- */
- rtl_UriDecodeWithCharset,
-
- /** Like rtl_UriDecodeWithCharset, but indicating failure when converting
- unmappable characters.
-
- @since UDK 3.2.0
- */
- rtl_UriDecodeStrict,
-
- rtl_UriDecode_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-}
-rtl_UriDecodeMechanism;
-
-/** Map a predefined rtl_UriCharClass to a form usable by rtl_uriEncode().
-
- The function rtl_uriEncode() expects an array of 128 booleans, and this
- function maps rtl_UriCharClass enumeration members to such arrays.
-
- @param eCharClass
- Any valid member of rtl_UriCharClass.
-
- @return
- An array of 128 booleans, to be used in calls to rtl_uriEncode().
- */
-SAL_DLLPUBLIC sal_Bool const * SAL_CALL rtl_getUriCharClass(rtl_UriCharClass eCharClass)
- SAL_THROW_EXTERN_C();
-
-/** Encode a text as (part of) a URI.
-
- @param pText
- Any Unicode string. Must not be null.
-
- @param pCharClass
- A char class, represented as an array of 128 booleans (true means keep the
- corresponding ASCII character unencoded, false means encode it). Must not
- be null, and the boolean corresponding to the percent sign (0x25) must be
- false. (See rtl_getUriCharClass() for a function mapping from
- rtl_UriCharClass to such arrays.)
-
- @param eMechanism
- The mechanism describing how escape sequences in the input text are
- handled.
-
- @param eCharset
- When Unicode characters from the input text have to be written using
- escape sequences (because they are either outside the ASCII range or do
- not belong to the given char class), they are first translated into this
- charset before being encoded using escape sequences.
-
- Also, if the encode mechanism is rtl_UriEncodeCheckEscapes, all escape
- sequences already present in the input text are interpreted as characters
- from this charset.
-
- @param pResult
- Returns an encoded representation of the input text. Must itself not be
- null, and must point to either null or a valid string.
-
- If the encode mechanism is rtl_UriEncodeStrict, and pText cannot be
- converted to eCharset because it contains unmappable characters (which
- implies that pText is not empty), then an empty string is returned.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uriEncode(
- rtl_uString * pText,
- sal_Bool const * pCharClass,
- rtl_UriEncodeMechanism eMechanism,
- rtl_TextEncoding eCharset,
- rtl_uString ** pResult)
- SAL_THROW_EXTERN_C();
-
-/** Decode (a part of) a URI.
-
- @param pText
- Any Unicode string. Must not be null. (If the input is indeed part of a
- valid URI, this string will only contain a subset of the ASCII characters,
- but this function also handles other Unicode characters properly.)
-
- @param eMechanism
- The mechanism describing how the input text is translated into a Unicode
- string.
-
- @param eCharset
- When the decode mechanism is rtl_UriDecodeWithCharset, all escape
- sequences in the input text are interpreted as characters from this
- charset. Those characters are translated to Unicode characters in the
- resulting output, if possible.
-
- When the decode mechanism is rtl_UriDecodeNone or rtl_UriDecodeToIuri,
- this parameter is ignored (and is best specified as
- RTL_TEXTENCODING_UTF8).
-
- @param pResult
- Returns a decoded representation of the input text. Must itself not be
- null, and must point to either null or a valid string.
-
- If the decode mechanism is rtl_UriDecodeStrict, and pText cannot be
- converted to eCharset because it contains (encodings of) unmappable
- characters (which implies that pText is not empty), then an empty string is
- returned.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uriDecode(
- rtl_uString * pText,
- rtl_UriDecodeMechanism eMechanism,
- rtl_TextEncoding eCharset,
- rtl_uString ** pResult)
- SAL_THROW_EXTERN_C();
-
-/** Convert a relative URI reference into an absolute one.
-
- A URI reference is a URI plus an optional @<"#" fragment> part.
-
- This function uses the algorithm described in RFC 2396, section 5.2, with
- the following clarifications: (1) Backwards-compatible relative URIs
- starting with a scheme component (see RFC 2396, section 5.2, step 3) are not
- supported. (2) Segments "." and ".." within the path of the base URI are
- not considered special, RFC 2396 seems a bit unlcear about that point.
- (3) Erroneous excess segments ".." within the path of the relative URI (if
- it is indeed relative) are left intact, as the examples in RFC 2396,
- section C.2, suggest. (4) If the relative URI is a reference to the
- "current document," the "current document" is taken to be the base URI.
-
- This function signals exceptions by returning false and letting pException
- point to a message explaining the exception.
-
- @param pBaseUriRef
- An absolute, hierarchical URI reference that serves as the base URI. If it
- has to be inspected (i.e., pRelUriRef is not an absolute URI already), and
- if it either is not an absolute URI (i.e., does not begin with a
- @<scheme ":"> part) or has a path that is non-empty but does not start
- with "/", an exception will be signaled.
-
- @param pRelUriRef
- An URI reference that may be either absolute or relative. If it is
- absolute, it will be returned unmodified (and it need not be hierarchical
- then).
-
- @param pResult
- Returns an absolute URI reference. Must itself not be null, and must point
- to either null or a valid string. If an exception is signalled, it is left
- unchanged.
-
- @param pException
- Returns an explanatory message in case an exception is signalled. Must
- itself not be null, and must point to either null or a valid string. If no
- exception is signalled, it is left unchanged.
-
- @return
- True if no exception is signalled, otherwise false.
- */
-SAL_DLLPUBLIC sal_Bool SAL_CALL rtl_uriConvertRelToAbs(
- rtl_uString * pBaseUriRef,
- rtl_uString * pRelUriRef,
- rtl_uString ** pResult,
- rtl_uString ** pException)
- SAL_THROW_EXTERN_C();
-
-#if defined __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _RTL_URI_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/uri.hxx b/sal/inc/rtl/uri.hxx
deleted file mode 100644
index 6e9ca00281c3..000000000000
--- a/sal/inc/rtl/uri.hxx
+++ /dev/null
@@ -1,144 +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 _RTL_URI_HXX_
-#define _RTL_URI_HXX_
-
-#include "rtl/malformeduriexception.hxx"
-#include "rtl/uri.h"
-#include "rtl/textenc.h"
-#include "rtl/ustring.hxx"
-#include "sal/types.h"
-
-namespace rtl {
-
-/** A wrapper around the C functions from <rtl/uri.h>.
- */
-class Uri
-{
-public:
- /** A wrapper around rtl_uriEncode() from <rtl/uri.h> (see there), using
- an array of 128 booleans as char class.
- */
- static inline rtl::OUString encode(rtl::OUString const & rText,
- sal_Bool const * pCharClass,
- rtl_UriEncodeMechanism eMechanism,
- rtl_TextEncoding eCharset)
- SAL_THROW(());
-
- /** A wrapper around rtl_uriEncode() from <rtl/uri.h> (see there), using
- a predefined rtl_UriCharClass enumeration member.
- */
- static inline rtl::OUString encode(rtl::OUString const & rText,
- rtl_UriCharClass eCharClass,
- rtl_UriEncodeMechanism eMechanism,
- rtl_TextEncoding eCharset)
- SAL_THROW(());
-
- /** A wrapper around rtl_uriDecode() from <rtl/uri.h> (see there).
- */
- static inline rtl::OUString decode(rtl::OUString const & rText,
- rtl_UriDecodeMechanism eMechanism,
- rtl_TextEncoding eCharset)
- SAL_THROW(());
-
- /** A wrapper around rtl_uriConvertRelToAbs() from <rtl/uri.h> (see there).
-
- @exception MalformedUriException
- Thrown in case rtl_uriConvertRelToAbs() signals an exception due to a
- malformed base URI.
- */
- static inline rtl::OUString convertRelToAbs(
- rtl::OUString const & rBaseUriRef, rtl::OUString const & rRelUriRef);
-
-private:
- /** not implemented */
- Uri();
-
- /** not implemented */
- Uri(Uri &);
-
- /** not implemented */
- ~Uri();
-
- /** not implemented */
- void operator =(Uri);
-};
-
-inline rtl::OUString Uri::encode(rtl::OUString const & rText,
- sal_Bool const * pCharClass,
- rtl_UriEncodeMechanism eMechanism,
- rtl_TextEncoding eCharset)
- SAL_THROW(())
-{
- rtl::OUString aResult;
- rtl_uriEncode(const_cast< rtl::OUString & >(rText).pData,
- pCharClass,
- eMechanism,
- eCharset,
- &aResult.pData);
- return aResult;
-}
-
-inline rtl::OUString Uri::encode(rtl::OUString const & rText,
- rtl_UriCharClass eCharClass,
- rtl_UriEncodeMechanism eMechanism,
- rtl_TextEncoding eCharset)
- SAL_THROW(())
-{
- rtl::OUString aResult;
- rtl_uriEncode(const_cast< rtl::OUString & >(rText).pData,
- rtl_getUriCharClass(eCharClass),
- eMechanism,
- eCharset,
- &aResult.pData);
- return aResult;
-}
-
-inline rtl::OUString Uri::decode(rtl::OUString const & rText,
- rtl_UriDecodeMechanism eMechanism,
- rtl_TextEncoding eCharset)
- SAL_THROW(())
-{
- rtl::OUString aResult;
- rtl_uriDecode(const_cast< rtl::OUString & >(rText).pData,
- eMechanism,
- eCharset,
- &aResult.pData);
- return aResult;
-}
-
-inline rtl::OUString Uri::convertRelToAbs(rtl::OUString const & rBaseUriRef,
- rtl::OUString const & rRelUriRef)
-{
- rtl::OUString aResult;
- rtl::OUString aException;
- if (!rtl_uriConvertRelToAbs(
- const_cast< rtl::OUString & >(rBaseUriRef).pData,
- const_cast< rtl::OUString & >(rRelUriRef).pData, &aResult.pData,
- &aException.pData))
- throw MalformedUriException(aException);
- return aResult;
-}
-
-}
-
-#endif // _RTL_URI_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/ustrbuf.h b/sal/inc/rtl/ustrbuf.h
deleted file mode 100644
index 7df10c18cc40..000000000000
--- a/sal/inc/rtl/ustrbuf.h
+++ /dev/null
@@ -1,212 +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 _RTL_USTRBUF_H_
-#define _RTL_USTRBUF_H_
-
-#include "sal/config.h"
-
-#include "rtl/ustring.h"
-#include "sal/saldllapi.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Allocates a new <code>String</code> that contains characters from
- the character array argument.
-
- The <code>count</code> argument specifies
- the length of the array. The initial capacity of the string buffer is
- <code>16</code> plus the length of the string argument.
-
- @param newStr out parameter, contains the new string. The reference count is 1.
- @param value the initial value of the string.
- @param count the length of value.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uStringbuffer_newFromStr_WithLength(
- rtl_uString ** newStr,
- const sal_Unicode * value,
- sal_Int32 count );
-
-/**
- Allocates a new <code>String</code> that contains the same sequence of
- characters as the string argument.
-
- The initial capacity is the larger of:
- <ul>
- <li> The <code>bufferLen</code> argument.
- <li> The <code>length</code> of the string argument.
- </ul>
-
- @param newStr out parameter, contains the new string. The reference count is 1.
- @param capacity the initial len of the string buffer.
- @param oldStr the initial value of the string.
- @return the new capacity of the string buffer
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_uStringbuffer_newFromStringBuffer(
- rtl_uString ** newStr,
- sal_Int32 capacity,
- rtl_uString * oldStr );
-
-/**
- Ensures that the capacity of the buffer is at least equal to the
- specified minimum.
-
- If the current capacity of this string buffer is less than the
- argument, then a new internal buffer is allocated with greater
- capacity. The new capacity is the larger of:
- <ul>
- <li>The <code>minimumCapacity</code> argument.
- <li>Twice the old capacity, plus <code>2</code>.
- </ul>
- If the <code>minimumCapacity</code> argument is nonpositive, this
- method takes no action and simply returns.
-
- @param[in,out] This the String to operate on.
- @param[in,out] capacity in: old capacity, out: new capacity.
- @param[in] minimumCapacity the minimum desired capacity.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uStringbuffer_ensureCapacity(
- rtl_uString ** This,
- sal_Int32* capacity,
- sal_Int32 minimumCapacity);
-
-/**
- Inserts the string representation of the <code>str</code> array
- argument into this string buffer.
-
- The characters of the array argument are inserted into the
- contents of this string buffer at the position indicated by
- <code>offset</code>. The length of this string buffer increases by
- the length of the argument.
-
- @param This The string, on that the operation should take place
- @param capacity the capacity of the string buffer
- @param offset the offset.
- @param str a character array.
- @param len the number of characters to append.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uStringbuffer_insert(
- /*inout*/rtl_uString ** This,
- /*inout*/sal_Int32 * capacity,
- sal_Int32 offset,
- const sal_Unicode * str,
- sal_Int32 len);
-
-/**
- Inserts a single UTF-32 character into this string buffer.
-
- <p>The single UTF-32 character will be represented within the string buffer
- as either one or two UTF-16 code units.</p>
-
- @param pThis the string buffer on which the operation is performed
-
- @param capacity the capacity of the string buffer
-
- @param offset the offset into this string buffer (from zero to the length
- of this string buffer, inclusive)
-
- @param c a well-formed UTF-32 code unit (that is, a value in the range
- <code>0</code>&ndash;<code>0x10FFFF</code>, but excluding
- <code>0xD800</code>&ndash;<code>0xDFFF</code>)
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uStringbuffer_insertUtf32(
- rtl_uString ** pThis, sal_Int32 * capacity, sal_Int32 offset, sal_uInt32 c)
- SAL_THROW_EXTERN_C();
-
-/**
- Inserts the 8-Bit ASCII string representation of the <code>str</code>
- array argument into this string buffer.
-
- Since this function is optimized
- for performance, the ASCII character values are not converted in any way.
- The caller has to make sure that all ASCII characters are in the allowed
- range between 0 and 127.
- <p>
- The characters of the array argument are inserted into the
- contents of this string buffer at the position indicated by
- <code>offset</code>. The length of this string buffer increases by
- the length of the argument.
-
- @param This The string, on that the operation should take place
- @param capacity the capacity of the string buffer
- @param offset the offset.
- @param str a character array.
- @param len the number of characters to append.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uStringbuffer_insert_ascii(
- /*inout*/rtl_uString ** This,
- /*inout*/sal_Int32 * capacity,
- sal_Int32 offset,
- const sal_Char * str,
- sal_Int32 len);
-
-/**
- Removes the characters in a substring of this sequence.
-
- The substring begins at the specified <code>start</code> and
- is <code>len</code> characters long.
-
- start must be >= 0 && <= This->length
-
- @param[in,out] This The String to operate on.
- @param[in] start The beginning index, inclusive
- @param[in] len The substring length
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uStringbuffer_remove(
- rtl_uString ** This,
- sal_Int32 start,
- sal_Int32 len );
-
-/**
- Returns an immutable rtl_uString object, while clearing the string buffer.
-
- This method is primarily used to allow these completed
- string allocation events to be traced.
-
- @param ppThis The string, on that the operation should take place
- @param nCapacity pointer to the capacity of the string buffer
-
- @since LibreOffice 3.6
- */
-SAL_DLLPUBLIC rtl_uString * SAL_CALL rtl_uStringBuffer_makeStringAndClear(
- /*inout*/ rtl_uString ** ppThis,
- sal_Int32 *nCapacity );
-
-/**
- References and returns an immutable rtl_uString object, from a mutable
- string-buffer object.
-
- This method is primarily used to allow legacy 'String' class
- conversions to OUString to be accurately traced.
-
- @param pThis The string, on that the operation should take place
-
- @since LibreOffice 3.6
- */
-SAL_DLLPUBLIC rtl_uString * SAL_CALL rtl_uStringBuffer_refReturn( rtl_uString *pThis );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTL_USTRBUF_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/ustrbuf.hxx b/sal/inc/rtl/ustrbuf.hxx
deleted file mode 100644
index b648714aad97..000000000000
--- a/sal/inc/rtl/ustrbuf.hxx
+++ /dev/null
@@ -1,1386 +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 _RTL_USTRBUF_HXX_
-#define _RTL_USTRBUF_HXX_
-
-#include "sal/config.h"
-
-#include <cassert>
-#include <string.h>
-
-#include <osl/diagnose.h>
-#include <rtl/ustrbuf.h>
-#include <rtl/ustring.hxx>
-#include <rtl/stringutils.hxx>
-#include <sal/types.h>
-
-#ifdef RTL_FAST_STRING
-#include <rtl/stringconcat.hxx>
-#endif
-
-// The unittest uses slightly different code to help check that the proper
-// calls are made. The class is put into a different namespace to make
-// sure the compiler generates a different (if generating also non-inline)
-// copy of the function and does not merge them together. The class
-// is "brought" into the proper rtl namespace by a typedef below.
-#ifdef RTL_STRING_UNITTEST
-#define rtl rtlunittest
-#endif
-
-namespace rtl
-{
-
-#ifdef RTL_STRING_UNITTEST
-#undef rtl
-#endif
-
-/** A string buffer implements a mutable sequence of characters.
- <p>
- String buffers are safe for use by multiple threads. The methods
- are synchronized where necessary so that all the operations on any
- particular instance behave as if they occur in some serial order.
- <p>
- String buffers are used by the compiler to implement the binary
- string concatenation operator <code>+</code>. For example, the code:
- <p><blockquote><pre>
- x = "a" + 4 + "c"
- </pre></blockquote><p>
- is compiled to the equivalent of:
- <p><blockquote><pre>
- x = new OUStringBuffer().append("a").append(4).append("c")
- .makeStringAndClear()
- </pre></blockquote><p>
- The principal operations on a <code>OUStringBuffer</code> are the
- <code>append</code> and <code>insert</code> methods, which are
- overloaded so as to accept data of any type. Each effectively
- converts a given datum to a string and then appends or inserts the
- characters of that string to the string buffer. The
- <code>append</code> method always adds these characters at the end
- of the buffer; the <code>insert</code> method adds the characters at
- a specified point.
- <p>
- For example, if <code>z</code> refers to a string buffer object
- whose current contents are "<code>start</code>", then
- the method call <code>z.append("le")</code> would cause the string
- buffer to contain "<code>startle</code>", whereas
- <code>z.insert(4, "le")</code> would alter the string buffer to
- contain "<code>starlet</code>".
- <p>
- Every string buffer has a capacity. As long as the length of the
- character sequence contained in the string buffer does not exceed
- the capacity, it is not necessary to allocate a new internal
- buffer array. If the internal buffer overflows, it is
- automatically made larger.
- */
-class SAL_WARN_UNUSED OUStringBuffer
-{
-public:
- /**
- Constructs a string buffer with no characters in it and an
- initial capacity of 16 characters.
- */
- OUStringBuffer()
- : pData(NULL)
- , nCapacity( 16 )
- {
- rtl_uString_new_WithLength( &pData, nCapacity );
- }
-
- /**
- Allocates a new string buffer that contains the same sequence of
- characters as the string buffer argument.
-
- @param value a <code>OUStringBuffer</code>.
- */
- OUStringBuffer( const OUStringBuffer & value )
- : pData(NULL)
- , nCapacity( value.nCapacity )
- {
- rtl_uStringbuffer_newFromStringBuffer( &pData, value.nCapacity, value.pData );
- }
-
- /**
- Constructs a string buffer with no characters in it and an
- initial capacity specified by the <code>length</code> argument.
-
- @param length the initial capacity.
- */
- explicit OUStringBuffer(int length)
- : pData(NULL)
- , nCapacity( length )
- {
- rtl_uString_new_WithLength( &pData, length );
- }
-
- /**
- Constructs a string buffer so that it represents the same
- sequence of characters as the string argument.
-
- The initial
- capacity of the string buffer is <code>16</code> plus the length
- of the string argument.
-
- @param value the initial contents of the buffer.
- */
- OUStringBuffer(const OUString& value)
- : pData(NULL)
- , nCapacity( value.getLength() + 16 )
- {
- rtl_uStringbuffer_newFromStr_WithLength( &pData, value.getStr(), value.getLength() );
- }
-
- template< typename T >
- OUStringBuffer( T& literal, typename internal::ConstCharArrayDetector< T, internal::Dummy >::Type = internal::Dummy() )
- : pData(NULL)
- , nCapacity( internal::ConstCharArrayDetector< T, void >::size - 1 + 16 )
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- rtl_uString_newFromLiteral( &pData, literal, internal::ConstCharArrayDetector< T, void >::size - 1, 16 );
-#ifdef RTL_STRING_UNITTEST
- rtl_string_unittest_const_literal = true;
-#endif
- }
-
-#ifdef RTL_STRING_UNITTEST
- /**
- * Only used by unittests to detect incorrect conversions.
- * @internal
- */
- template< typename T >
- OUStringBuffer( T&, typename internal::ExceptConstCharArrayDetector< T >::Type = internal::Dummy() )
- {
- pData = 0;
- nCapacity = 10;
- rtl_uString_newFromLiteral( &pData, "!!br0ken!!", 10, 0 ); // set to garbage
- rtl_string_unittest_invalid_conversion = true;
- }
- /**
- * Only used by unittests to detect incorrect conversions.
- * @internal
- */
- template< typename T >
- OUStringBuffer( const T&, typename internal::ExceptCharArrayDetector< T >::Type = internal::Dummy() )
- {
- pData = 0;
- nCapacity = 10;
- rtl_uString_newFromLiteral( &pData, "!!br0ken!!", 10, 0 ); // set to garbage
- rtl_string_unittest_invalid_conversion = true;
- }
-#endif
-
-#ifdef RTL_FAST_STRING
- /**
- @overload
- @internal
- */
- template< typename T1, typename T2 >
- OUStringBuffer( const OUStringConcat< T1, T2 >& c )
- {
- const sal_Int32 l = c.length();
- nCapacity = l + 16;
- pData = rtl_uString_alloc( nCapacity );
- sal_Unicode* end = c.addData( pData->buffer );
- *end = '\0';
- pData->length = end - pData->buffer;
- // TODO realloc in case pData->>length is noticeably smaller than l ?
- }
-#endif
- /** Assign to this a copy of value.
- */
- OUStringBuffer& operator = ( const OUStringBuffer& value )
- {
- if (this != &value)
- {
- rtl_uStringbuffer_newFromStringBuffer(&pData,
- value.nCapacity,
- value.pData);
- nCapacity = value.nCapacity;
- }
- return *this;
- }
-
- /**
- Release the string data.
- */
- ~OUStringBuffer()
- {
- rtl_uString_release( pData );
- }
-
- /**
- Fill the string data in the new string and clear the buffer.
-
- This method is more efficient than the contructor of the string. It does
- not copy the buffer.
-
- @return the string previously contained in the buffer.
- */
- OUString makeStringAndClear()
- {
- return OUString(
- rtl_uStringBuffer_makeStringAndClear( &pData, &nCapacity ),
- SAL_NO_ACQUIRE );
- }
-
- /**
- Returns the length (character count) of this string buffer.
-
- @return the number of characters in this string buffer.
- */
- sal_Int32 getLength() const
- {
- return pData->length;
- }
-
- /**
- Checks if a string buffer is empty.
-
- @return true if the string buffer is empty;
- false, otherwise.
-
- @since LibreOffice 4.1
- */
- bool isEmpty() const SAL_THROW(())
- {
- return pData->length == 0;
- }
-
- /**
- Returns the current capacity of the String buffer.
-
- The capacity
- is the amount of storage available for newly inserted
- characters. The real buffer size is 2 bytes longer, because
- all strings are 0 terminated.
-
- @return the current capacity of this string buffer.
- */
- sal_Int32 getCapacity() const
- {
- return nCapacity;
- }
-
- /**
- Ensures that the capacity of the buffer is at least equal to the
- specified minimum.
-
- The new capacity will be at least as large as the maximum of the current
- length (so that no contents of the buffer is destroyed) and the given
- minimumCapacity. If the given minimumCapacity is negative, nothing is
- changed.
-
- @param minimumCapacity the minimum desired capacity.
- */
- void ensureCapacity(sal_Int32 minimumCapacity)
- {
- rtl_uStringbuffer_ensureCapacity( &pData, &nCapacity, minimumCapacity );
- }
-
- /**
- Sets the length of this String buffer.
-
- If the <code>newLength</code> argument is less than the current
- length of the string buffer, the string buffer is truncated to
- contain exactly the number of characters given by the
- <code>newLength</code> argument.
- <p>
- If the <code>newLength</code> argument is greater than or equal
- to the current length, sufficient null characters
- (<code>'&#92;u0000'</code>) are appended to the string buffer so that
- length becomes the <code>newLength</code> argument.
- <p>
- The <code>newLength</code> argument must be greater than or equal
- to <code>0</code>.
-
- @param newLength the new length of the buffer.
- */
- void setLength(sal_Int32 newLength)
- {
- assert(newLength >= 0);
- // Avoid modifications if pData points to const empty string:
- if( newLength != pData->length )
- {
- if( newLength > nCapacity )
- rtl_uStringbuffer_ensureCapacity(&pData, &nCapacity, newLength);
- else
- pData->buffer[newLength] = 0;
- pData->length = newLength;
- }
- }
-
- /**
- Returns the character at a specific index in this string buffer.
-
- The first character of a string buffer is at index
- <code>0</code>, the next at index <code>1</code>, and so on, for
- array indexing.
- <p>
- The index argument must be greater than or equal to
- <code>0</code>, and less than the length of this string buffer.
-
- @param index the index of the desired character.
- @return the character at the specified index of this string buffer.
- */
- SAL_DEPRECATED("use rtl::OUStringBuffer::operator [] instead")
- sal_Unicode charAt( sal_Int32 index ) const
- {
- assert(index >= 0 && index < pData->length);
- return pData->buffer[ index ];
- }
-
- /**
- The character at the specified index of this string buffer is set
- to <code>ch</code>.
-
- The index argument must be greater than or equal to
- <code>0</code>, and less than the length of this string buffer.
-
- @param index the index of the character to modify.
- @param ch the new character.
- */
- SAL_DEPRECATED("use rtl::OUStringBuffer::operator [] instead")
- OUStringBuffer & setCharAt(sal_Int32 index, sal_Unicode ch)
- {
- assert(index >= 0 && index < pData->length);
- pData->buffer[ index ] = ch;
- return *this;
- }
-
- /**
- Return a null terminated unicode character array.
- */
- const sal_Unicode* getStr() const { return pData->buffer; }
-
- /**
- Access to individual characters.
-
- @param index must be non-negative and less than length.
-
- @return a reference to the character at the given index.
-
- @since LibreOffice 3.5
- */
- sal_Unicode & operator [](sal_Int32 index)
- {
- assert(index >= 0 && index < pData->length);
- return pData->buffer[index];
- }
-
- /**
- Return a OUString instance reflecting the current content
- of this OUStringBuffer.
- */
- const OUString toString() const
- {
- return OUString(pData->buffer, pData->length);
- }
-
- /**
- Appends the string to this string buffer.
-
- The characters of the <code>OUString</code> argument are appended, in
- order, to the contents of this string buffer, increasing the
- length of this string buffer by the length of the argument.
-
- @param str a string.
- @return this string buffer.
- */
- OUStringBuffer & append(const OUString &str)
- {
- return append( str.getStr(), str.getLength() );
- }
-
- /**
- Appends the content of a stringbuffer to this string buffer.
-
- The characters of the <code>OUStringBuffer</code> argument are appended, in
- order, to the contents of this string buffer, increasing the
- length of this string buffer by the length of the argument.
-
- @param str a string.
- @return this string buffer.
-
- @since LibreOffice 4.0
- */
- OUStringBuffer & append(const OUStringBuffer &str)
- {
- if(str.getLength() > 0)
- {
- append( str.getStr(), str.getLength() );
- }
- return *this;
- }
-
- /**
- Appends the string representation of the <code>char</code> array
- argument to this string buffer.
-
- The characters of the array argument are appended, in order, to
- the contents of this string buffer. The length of this string
- buffer increases by the length of the argument.
-
- @param str the characters to be appended.
- @return this string buffer.
- */
- OUStringBuffer & append( const sal_Unicode * str )
- {
- return append( str, rtl_ustr_getLength( str ) );
- }
-
- /**
- Appends the string representation of the <code>char</code> array
- argument to this string buffer.
-
- Characters of the character array <code>str</code> are appended,
- in order, to the contents of this string buffer. The length of this
- string buffer increases by the value of <code>len</code>.
-
- @param str the characters to be appended; must be non-null, and must
- point to at least len characters
- @param len the number of characters to append; must be non-negative
- @return this string buffer.
- */
- OUStringBuffer & append( const sal_Unicode * str, sal_Int32 len)
- {
- // insert behind the last character
- rtl_uStringbuffer_insert( &pData, &nCapacity, getLength(), str, len );
- return *this;
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, OUStringBuffer& >::Type append( T& literal )
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- rtl_uStringbuffer_insert_ascii( &pData, &nCapacity, getLength(), literal,
- internal::ConstCharArrayDetector< T, void >::size - 1 );
- return *this;
- }
-
-#ifdef RTL_FAST_STRING
- /**
- @overload
- @internal
- */
- template< typename T1, typename T2 >
- OUStringBuffer& append( const OUStringConcat< T1, T2 >& c )
- {
- const int l = c.length();
- if( l == 0 )
- return *this;
- rtl_uStringbuffer_ensureCapacity( &pData, &nCapacity, pData->length + l );
- sal_Unicode* end = c.addData( pData->buffer + pData->length );
- *end = '\0';
- pData->length = end - pData->buffer;
- return *this;
- }
-#endif
-
- /**
- Appends a 8-Bit ASCII character string to this string buffer.
-
- Since this method is optimized for performance. the ASCII
- character values are not converted in any way. The caller
- has to make sure that all ASCII characters are in the
- allowed range between 0 and 127. The ASCII string must be
- NULL-terminated.
- <p>
- The characters of the array argument are appended, in order, to
- the contents of this string buffer. The length of this string
- buffer increases by the length of the argument.
-
- @param str the 8-Bit ASCII characters to be appended.
- @return this string buffer.
- */
- OUStringBuffer & appendAscii( const sal_Char * str )
- {
- return appendAscii( str, rtl_str_getLength( str ) );
- }
-
- /**
- Appends a 8-Bit ASCII character string to this string buffer.
-
- Since this method is optimized for performance. the ASCII
- character values are not converted in any way. The caller
- has to make sure that all ASCII characters are in the
- allowed range between 0 and 127. The ASCII string must be
- NULL-terminated.
- <p>
- Characters of the character array <code>str</code> are appended,
- in order, to the contents of this string buffer. The length of this
- string buffer increases by the value of <code>len</code>.
-
- @param str the 8-Bit ASCII characters to be appended; must be non-null,
- and must point to at least len characters
- @param len the number of characters to append; must be non-negative
- @return this string buffer.
- */
- OUStringBuffer & appendAscii( const sal_Char * str, sal_Int32 len)
- {
- rtl_uStringbuffer_insert_ascii( &pData, &nCapacity, getLength(), str, len );
- return *this;
- }
-
- /**
- Appends the string representation of the <code>bool</code>
- argument to the string buffer.
-
- The argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then appended to this string buffer.
-
- @param b a <code>bool</code>.
- @return this string buffer.
-
- @since LibreOffice 4.1
- */
- OUStringBuffer & append(bool b)
- {
- sal_Unicode sz[RTL_USTR_MAX_VALUEOFBOOLEAN];
- return append( sz, rtl_ustr_valueOfBoolean( sz, b ) );
- }
-
- // Pointer can be automatically converted to bool, which is unwanted here.
- // Explicitly delete all pointer append() overloads to prevent this
- // (except for char* and sal_Unicode* overloads, which are handled elsewhere).
- template< typename T >
- typename internal::Enable< void,
- !internal::CharPtrDetector< T* >::ok && !internal::SalUnicodePtrDetector< T* >::ok >::Type
- append( T* ) SAL_DELETED_FUNCTION;
-
- // This overload is needed because OUString has a ctor from rtl_uString*, but
- // the bool overload above would be prefered to the conversion.
- /**
- @internal
- */
- OUStringBuffer & append(rtl_uString* str)
- {
- return append( OUString( str ));
- }
-
- /**
- Appends the string representation of the <code>sal_Bool</code>
- argument to the string buffer.
-
- The argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then appended to this string buffer.
-
- @param b a <code>sal_Bool</code>.
- @return this string buffer.
- */
- OUStringBuffer & append(sal_Bool b)
- {
- sal_Unicode sz[RTL_USTR_MAX_VALUEOFBOOLEAN];
- return append( sz, rtl_ustr_valueOfBoolean( sz, b ) );
- }
-
- /**
- Appends the string representation of the ASCII <code>char</code>
- argument to this string buffer.
-
- The argument is appended to the contents of this string buffer.
- The length of this string buffer increases by <code>1</code>.
-
- @param c an ASCII <code>char</code>.
- @return this string buffer.
-
- @since LibreOffice 3.5
- */
- OUStringBuffer & append(char c)
- {
- assert(static_cast< unsigned char >(c) <= 0x7F);
- return append(sal_Unicode(c));
- }
-
- /**
- Appends the string representation of the <code>char</code>
- argument to this string buffer.
-
- The argument is appended to the contents of this string buffer.
- The length of this string buffer increases by <code>1</code>.
-
- @param c a <code>char</code>.
- @return this string buffer.
- */
- OUStringBuffer & append(sal_Unicode c)
- {
- return append( &c, 1 );
- }
-
- /**
- Appends the string representation of the <code>sal_Int32</code>
- argument to this string buffer.
-
- The argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then appended to this string buffer.
-
- @param i an <code>sal_Int32</code>.
- @param radix the radix
- @return this string buffer.
- */
- OUStringBuffer & append(sal_Int32 i, sal_Int16 radix = 10 )
- {
- sal_Unicode sz[RTL_USTR_MAX_VALUEOFINT32];
- return append( sz, rtl_ustr_valueOfInt32( sz, i, radix ) );
- }
-
- /**
- Appends the string representation of the <code>long</code>
- argument to this string buffer.
-
- The argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then appended to this string buffer.
-
- @param l a <code>long</code>.
- @param radix the radix
- @return this string buffer.
- */
- OUStringBuffer & append(sal_Int64 l, sal_Int16 radix = 10 )
- {
- sal_Unicode sz[RTL_USTR_MAX_VALUEOFINT64];
- return append( sz, rtl_ustr_valueOfInt64( sz, l, radix ) );
- }
-
- /**
- Appends the string representation of the <code>float</code>
- argument to this string buffer.
-
- The argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then appended to this string buffer.
-
- @param f a <code>float</code>.
- @return this string buffer.
- */
- OUStringBuffer & append(float f)
- {
- sal_Unicode sz[RTL_USTR_MAX_VALUEOFFLOAT];
- return append( sz, rtl_ustr_valueOfFloat( sz, f ) );
- }
-
- /**
- Appends the string representation of the <code>double</code>
- argument to this string buffer.
-
- The argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then appended to this string buffer.
-
- @param d a <code>double</code>.
- @return this string buffer.
- */
- OUStringBuffer & append(double d)
- {
- sal_Unicode sz[RTL_USTR_MAX_VALUEOFDOUBLE];
- return append( sz, rtl_ustr_valueOfDouble( sz, d ) );
- }
-
- /**
- Appends a single UTF-32 character to this string buffer.
-
- <p>The single UTF-32 character will be represented within the string
- buffer as either one or two UTF-16 code units.</p>
-
- @param c a well-formed UTF-32 code unit (that is, a value in the range
- <code>0</code>&ndash;<code>0x10FFFF</code>, but excluding
- <code>0xD800</code>&ndash;<code>0xDFFF</code>)
-
- @return
- this string buffer
- */
- OUStringBuffer & appendUtf32(sal_uInt32 c) {
- return insertUtf32(getLength(), c);
- }
-
- /**
- Inserts the string into this string buffer.
-
- The characters of the <code>String</code> argument are inserted, in
- order, into this string buffer at the indicated offset. The length
- of this string buffer is increased by the length of the argument.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param str a string.
- @return this string buffer.
- */
- OUStringBuffer & insert(sal_Int32 offset, const OUString & str)
- {
- return insert( offset, str.getStr(), str.getLength() );
- }
-
- /**
- Inserts the string representation of the <code>char</code> array
- argument into this string buffer.
-
- The characters of the array argument are inserted into the
- contents of this string buffer at the position indicated by
- <code>offset</code>. The length of this string buffer increases by
- the length of the argument.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param str a character array.
- @return this string buffer.
- */
- OUStringBuffer & insert( sal_Int32 offset, const sal_Unicode * str )
- {
- return insert( offset, str, rtl_ustr_getLength( str ) );
- }
-
- /**
- Inserts the string representation of the <code>char</code> array
- argument into this string buffer.
-
- The characters of the array argument are inserted into the
- contents of this string buffer at the position indicated by
- <code>offset</code>. The length of this string buffer increases by
- the length of the argument.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param str a character array.
- @param len the number of characters to append.
- @return this string buffer.
- */
- OUStringBuffer & insert( sal_Int32 offset, const sal_Unicode * str, sal_Int32 len)
- {
- // insert behind the last character
- rtl_uStringbuffer_insert( &pData, &nCapacity, offset, str, len );
- return *this;
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, OUStringBuffer& >::Type insert( sal_Int32 offset, T& literal )
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- rtl_uStringbuffer_insert_ascii( &pData, &nCapacity, offset, literal,
- internal::ConstCharArrayDetector< T, void >::size - 1 );
- return *this;
- }
-
- /**
- Inserts the string representation of the <code>sal_Bool</code>
- argument into this string buffer.
-
- The second argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then inserted into this string buffer at the indicated
- offset.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param b a <code>sal_Bool</code>.
- @return this string buffer.
- */
- OUStringBuffer & insert(sal_Int32 offset, sal_Bool b)
- {
- sal_Unicode sz[RTL_USTR_MAX_VALUEOFBOOLEAN];
- return insert( offset, sz, rtl_ustr_valueOfBoolean( sz, b ) );
- }
-
- /**
- Inserts the string representation of the <code>char</code>
- argument into this string buffer.
-
- The second argument is inserted into the contents of this string
- buffer at the position indicated by <code>offset</code>. The length
- of this string buffer increases by one.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param c a <code>char</code>.
- @return this string buffer.
-
- @since LibreOffice 3.6
- */
- OUStringBuffer & insert(sal_Int32 offset, char c)
- {
- sal_Unicode u = c;
- return insert( offset, &u, 1 );
- }
-
- /**
- Inserts the string representation of the <code>char</code>
- argument into this string buffer.
-
- The second argument is inserted into the contents of this string
- buffer at the position indicated by <code>offset</code>. The length
- of this string buffer increases by one.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param c a <code>char</code>.
- @return this string buffer.
- */
- OUStringBuffer & insert(sal_Int32 offset, sal_Unicode c)
- {
- return insert( offset, &c, 1 );
- }
-
- /**
- Inserts the string representation of the second <code>sal_Int32</code>
- argument into this string buffer.
-
- The second argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then inserted into this string buffer at the indicated
- offset.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param i an <code>sal_Int32</code>.
- @param radix the radix.
- @return this string buffer.
- @exception StringIndexOutOfBoundsException if the offset is invalid.
- */
- OUStringBuffer & insert(sal_Int32 offset, sal_Int32 i, sal_Int16 radix = 10 )
- {
- sal_Unicode sz[RTL_USTR_MAX_VALUEOFINT32];
- return insert( offset, sz, rtl_ustr_valueOfInt32( sz, i, radix ) );
- }
-
- /**
- Inserts the string representation of the <code>long</code>
- argument into this string buffer.
-
- The second argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then inserted into this string buffer at the indicated
- offset.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param l a <code>long</code>.
- @param radix the radix.
- @return this string buffer.
- @exception StringIndexOutOfBoundsException if the offset is invalid.
- */
- OUStringBuffer & insert(sal_Int32 offset, sal_Int64 l, sal_Int16 radix = 10 )
- {
- sal_Unicode sz[RTL_USTR_MAX_VALUEOFINT64];
- return insert( offset, sz, rtl_ustr_valueOfInt64( sz, l, radix ) );
- }
-
- /**
- Inserts the string representation of the <code>float</code>
- argument into this string buffer.
-
- The second argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then inserted into this string buffer at the indicated
- offset.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param f a <code>float</code>.
- @return this string buffer.
- @exception StringIndexOutOfBoundsException if the offset is invalid.
- */
- OUStringBuffer insert(sal_Int32 offset, float f)
- {
- sal_Unicode sz[RTL_USTR_MAX_VALUEOFFLOAT];
- return insert( offset, sz, rtl_ustr_valueOfFloat( sz, f ) );
- }
-
- /**
- Inserts the string representation of the <code>double</code>
- argument into this string buffer.
-
- The second argument is converted to a string as if by the method
- <code>String.valueOf</code>, and the characters of that
- string are then inserted into this string buffer at the indicated
- offset.
- <p>
- The offset argument must be greater than or equal to
- <code>0</code>, and less than or equal to the length of this
- string buffer.
-
- @param offset the offset.
- @param d a <code>double</code>.
- @return this string buffer.
- @exception StringIndexOutOfBoundsException if the offset is invalid.
- */
- OUStringBuffer & insert(sal_Int32 offset, double d)
- {
- sal_Unicode sz[RTL_USTR_MAX_VALUEOFDOUBLE];
- return insert( offset, sz, rtl_ustr_valueOfDouble( sz, d ) );
- }
-
- /**
- Inserts a single UTF-32 character into this string buffer.
-
- <p>The single UTF-32 character will be represented within the string
- buffer as either one or two UTF-16 code units.</p>
-
- @param offset the offset into this string buffer (from zero to the length
- of this string buffer, inclusive)
-
- @param c a well-formed UTF-32 code unit (that is, a value in the range
- <code>0</code>&ndash;<code>0x10FFFF</code>, but excluding
- <code>0xD800</code>&ndash;<code>0xDFFF</code>)
-
- @return this string buffer
- */
- OUStringBuffer & insertUtf32(sal_Int32 offset, sal_uInt32 c) {
- rtl_uStringbuffer_insertUtf32(&pData, &nCapacity, offset, c);
- return *this;
- }
-
- /**
- Removes the characters in a substring of this sequence.
-
- The substring begins at the specified <code>start</code> and
- is <code>len</code> characters long.
-
- start must be >= 0 && <= This->length
-
- @param start The beginning index, inclusive
- @param len The substring length
- @return this string buffer.
- */
- OUStringBuffer & remove( sal_Int32 start, sal_Int32 len )
- {
- rtl_uStringbuffer_remove( &pData, start, len );
- return *this;
- }
-
- /**
- Removes the tail of a string buffer start at the indicate position
-
- start must be >= 0 && <= This->length
-
- @param start The beginning index, inclusive. default to 0
- @return this string buffer.
-
- @since LibreOffice 4.0
- */
- OUStringBuffer & truncate( sal_Int32 start = 0 )
- {
- rtl_uStringbuffer_remove( &pData, start, getLength() - start );
- return *this;
- }
-
- /**
- Replace all occurrences of
- oldChar in this string buffer with newChar.
-
- @since LibreOffice 4.0
-
- @param oldChar the old character.
- @param newChar the new character.
- @return this string buffer
- */
- OUStringBuffer& replace( sal_Unicode oldChar, sal_Unicode newChar )
- {
- sal_Int32 index = 0;
- while((index = indexOf(oldChar, index)) >= 0)
- {
- pData->buffer[ index ] = newChar;
- }
- return *this;
- }
-
- /** Allows access to the internal data of this OUStringBuffer, for effective
- manipulation.
-
- This method should be used with care. After you have called this
- method, you may use the returned pInternalData or pInternalCapacity only
- as long as you make no other method call on this OUStringBuffer.
-
- @param pInternalData
- This output parameter receives a pointer to the internal data
- (rtl_uString pointer). pInternalData itself must not be null.
-
- @param pInternalCapacity
- This output parameter receives a pointer to the internal capacity.
- pInternalCapacity itself must not be null.
- */
- inline void accessInternals(rtl_uString *** pInternalData,
- sal_Int32 ** pInternalCapacity)
- {
- *pInternalData = &pData;
- *pInternalCapacity = &nCapacity;
- }
-
-
- /**
- Returns the index within this string of the first occurrence of the
- specified character, starting the search at the specified index.
-
- @since LibreOffice 4.0
-
- @param ch character to be located.
- @param fromIndex the index to start the search from.
- The index must be greater or equal than 0
- and less or equal as the string length.
- @return the index of the first occurrence of the character in the
- character sequence represented by this string that is
- greater than or equal to fromIndex, or
- -1 if the character does not occur.
- */
- sal_Int32 indexOf( sal_Unicode ch, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- sal_Int32 ret = rtl_ustr_indexOfChar_WithLength( pData->buffer+fromIndex, pData->length-fromIndex, ch );
- return (ret < 0 ? ret : ret+fromIndex);
- }
-
- /**
- Returns the index within this string of the last occurrence of the
- specified character, searching backward starting at the end.
-
- @since LibreOffice 4.0
-
- @param ch character to be located.
- @return the index of the last occurrence of the character in the
- character sequence represented by this string, or
- -1 if the character does not occur.
- */
- sal_Int32 lastIndexOf( sal_Unicode ch ) const SAL_THROW(())
- {
- return rtl_ustr_lastIndexOfChar_WithLength( pData->buffer, pData->length, ch );
- }
-
- /**
- Returns the index within this string of the last occurrence of the
- specified character, searching backward starting before the specified
- index.
-
- @since LibreOffice 4.0
-
- @param ch character to be located.
- @param fromIndex the index before which to start the search.
- @return the index of the last occurrence of the character in the
- character sequence represented by this string that
- is less than fromIndex, or -1
- if the character does not occur before that point.
- */
- sal_Int32 lastIndexOf( sal_Unicode ch, sal_Int32 fromIndex ) const SAL_THROW(())
- {
- return rtl_ustr_lastIndexOfChar_WithLength( pData->buffer, fromIndex, ch );
- }
-
- /**
- Returns the index within this string of the first occurrence of the
- specified substring, starting at the specified index.
-
- If str doesn't include any character, always -1 is
- returned. This is also the case, if both strings are empty.
-
- @since LibreOffice 4.0
-
- @param str the substring to search for.
- @param fromIndex the index to start the search from.
- @return If the string argument occurs one or more times as a substring
- within this string at the starting index, then the index
- of the first character of the first such substring is
- returned. If it does not occur as a substring starting
- at fromIndex or beyond, -1 is returned.
- */
- sal_Int32 indexOf( const OUString & str, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- sal_Int32 ret = rtl_ustr_indexOfStr_WithLength( pData->buffer+fromIndex, pData->length-fromIndex,
- str.pData->buffer, str.pData->length );
- return (ret < 0 ? ret : ret+fromIndex);
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
-
- @since LibreOffice 4.0
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, sal_Int32 >::Type indexOf( T& literal, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- sal_Int32 ret = rtl_ustr_indexOfAscii_WithLength(
- pData->buffer + fromIndex, pData->length - fromIndex, literal,
- internal::ConstCharArrayDetector< T, void >::size - 1);
- return ret < 0 ? ret : ret + fromIndex;
- }
-
- /**
- Returns the index within this string of the last occurrence of
- the specified substring, searching backward starting at the end.
-
- The returned index indicates the starting index of the substring
- in this string.
- If str doesn't include any character, always -1 is
- returned. This is also the case, if both strings are empty.
-
- @since LibreOffice 4.0
-
- @param str the substring to search for.
- @return If the string argument occurs one or more times as a substring
- within this string, then the index of the first character of
- the last such substring is returned. If it does not occur as
- a substring, -1 is returned.
- */
- sal_Int32 lastIndexOf( const OUString & str ) const SAL_THROW(())
- {
- return rtl_ustr_lastIndexOfStr_WithLength( pData->buffer, pData->length,
- str.pData->buffer, str.pData->length );
- }
-
- /**
- Returns the index within this string of the last occurrence of
- the specified substring, searching backward starting before the specified
- index.
-
- The returned index indicates the starting index of the substring
- in this string.
- If str doesn't include any character, always -1 is
- returned. This is also the case, if both strings are empty.
-
- @since LibreOffice 4.0
-
- @param str the substring to search for.
- @param fromIndex the index before which to start the search.
- @return If the string argument occurs one or more times as a substring
- within this string before the starting index, then the index
- of the first character of the last such substring is
- returned. Otherwise, -1 is returned.
- */
- sal_Int32 lastIndexOf( const OUString & str, sal_Int32 fromIndex ) const SAL_THROW(())
- {
- return rtl_ustr_lastIndexOfStr_WithLength( pData->buffer, fromIndex,
- str.pData->buffer, str.pData->length );
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 4.0
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, sal_Int32 >::Type lastIndexOf( T& literal ) const SAL_THROW(())
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return rtl_ustr_lastIndexOfAscii_WithLength(
- pData->buffer, pData->length, literal, internal::ConstCharArrayDetector< T, void >::size - 1);
- }
-
- /**
- Strip the given character from the start of the buffer.
-
- @since LibreOffice 4.0
-
- @param c the character to strip
- @return The number of characters stripped
-
- */
- sal_Int32 stripStart(sal_Unicode c = (sal_Unicode)' ')
- {
- sal_Int32 index;
- for(index = 0; index < getLength() ; index++)
- {
- if(pData->buffer[ index ] != c)
- {
- break;
- }
- }
- if(index)
- {
- remove(0, index);
- }
- return index;
- }
-
- /**
- Strip the given character from the end of the buffer.
-
- @since LibreOffice 4.0
-
- @param c the character to strip
- @return The number of characters stripped
-
- */
- sal_Int32 stripEnd(sal_Unicode c = (sal_Unicode)' ')
- {
- sal_Int32 result = getLength();
- sal_Int32 index;
- for(index = getLength(); index > 0 ; index--)
- {
- if(pData->buffer[ index - 1 ] != c)
- {
- break;
- }
- }
- if(index < getLength())
- {
- truncate(index);
- }
- return result - getLength();
- }
- /**
- Strip the given character from the both end of the buffer.
-
- @since LibreOffice 4.0
-
- @param c the character to strip
- @return The number of characters stripped
-
- */
- sal_Int32 strip(sal_Unicode c = (sal_Unicode)' ')
- {
- return stripStart(c) + stripEnd(c);
- }
- /**
- Returns a new string buffer that is a substring of this string.
-
- The substring begins at the specified beginIndex. If
- beginIndex is negative or be greater than the length of
- this string, behaviour is undefined.
-
- @param beginIndex the beginning index, inclusive.
- @return the specified substring.
- @since LibreOffice 4.1
- */
- OUStringBuffer copy( sal_Int32 beginIndex ) const SAL_THROW(())
- {
- assert(beginIndex >= 0 && beginIndex <= getLength());
- return copy( beginIndex, getLength() - beginIndex );
- }
-
- /**
- Returns a new string buffer that is a substring of this string.
-
- The substring begins at the specified beginIndex and contains count
- characters. If either beginIndex or count are negative,
- or beginIndex + count are greater than the length of this string
- then behaviour is undefined.
-
- @param beginIndex the beginning index, inclusive.
- @param count the number of characters.
- @return the specified substring.
- @since LibreOffice 4.1
- */
- OUStringBuffer copy( sal_Int32 beginIndex, sal_Int32 count ) const SAL_THROW(())
- {
- assert(beginIndex >= 0 && beginIndex <= getLength());
- assert(count >= 0 && count <= getLength() - beginIndex);
- rtl_uString *pNew = 0;
- rtl_uStringbuffer_newFromStr_WithLength( &pNew, getStr() + beginIndex, count );
- return OUStringBuffer( pNew, count + 16 );
- }
-
-#ifdef LIBO_INTERNAL_ONLY
- // This is to complement the RTL_FAST_STRING operator+, which allows any combination of valid operands,
- // even two buffers. It's intentional it returns OUString, just like the operator+ would in the fast variant.
-#ifndef RTL_FAST_STRING
- /**
- @internal
- @since LibreOffice 4.1
- */
- friend OUString operator+( const OUStringBuffer& str1, const OUStringBuffer& str2 ) SAL_THROW(())
- {
- return OUString( str1.pData ).concat( str2.pData );
- }
-#endif
-#endif
-
-private:
- OUStringBuffer( rtl_uString * value, const sal_Int32 capacity )
- {
- pData = value;
- nCapacity = capacity;
- }
-
- /**
- A pointer to the data structur which contains the data.
- */
- rtl_uString * pData;
-
- /**
- The len of the pData->buffer.
- */
- sal_Int32 nCapacity;
-};
-
-#ifdef RTL_FAST_STRING
-/**
- @internal
-*/
-template<>
-struct ToStringHelper< OUStringBuffer >
- {
- static int length( const OUStringBuffer& s ) { return s.getLength(); }
- static sal_Unicode* addData( sal_Unicode* buffer, const OUStringBuffer& s ) { return addDataHelper( buffer, s.getStr(), s.getLength()); }
- static const bool allowOStringConcat = false;
- static const bool allowOUStringConcat = true;
- };
-#endif
-
-}
-
-#ifdef RTL_STRING_UNITTEST
-namespace rtl
-{
-typedef rtlunittest::OUStringBuffer OUStringBuffer;
-}
-#endif
-
-#ifdef RTL_USING
-using ::rtl::OUStringBuffer;
-#endif
-
-#endif /* _RTL_USTRBUF_HXX_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/ustring.h b/sal/inc/rtl/ustring.h
deleted file mode 100644
index da6720b3bcf6..000000000000
--- a/sal/inc/rtl/ustring.h
+++ /dev/null
@@ -1,2022 +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 _RTL_USTRING_H_
-#define _RTL_USTRING_H_
-
-#include "sal/config.h"
-
-#include "osl/interlck.h"
-#include "rtl/string.h"
-#include "rtl/textenc.h"
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* ======================================================================= */
-
-/** Return the length of a string.
-
- The length is equal to the number of 16-bit Unicode characters in the
- string, without the terminating NUL character.
-
- @param str
- a null-terminated string.
-
- @return
- the length of the sequence of characters represented by this string,
- excluding the terminating NUL character.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_getLength(
- const sal_Unicode * str ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. This function
- cannot be used for language-specific sorting. Both strings must be
- null-terminated.
-
- @param first
- the first null-terminated string to be compared.
-
- @param second
- the second null-terminated string which is compared with the first one.
-
- @return
- 0 if both strings are equal, a value less than 0 if the first string is
- less than the second string, and a value greater than 0 if the first
- string is greater than the second string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_compare(
- const sal_Unicode * first, const sal_Unicode * second ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. This function
- cannot be used for language-specific sorting.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second string which is compared with the first one. Need not be
- null-terminated, but must be at least as long as the specified secondLen.
-
- @param secondLen
- the length of the second string.
-
- @return
- 0 if both strings are equal, a value less than 0 if the first string is
- less than the second string, and a value greater than 0 if the first
- string is greater than the second string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_compare_WithLength(
- const sal_Unicode * first, sal_Int32 firstLen, const sal_Unicode * second, sal_Int32 secondLen ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings with a maximum count of characters.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. This function
- cannot be used for language-specific sorting.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second string which is compared with the first one. Need not be
- null-terminated, but must be at least as long as the specified secondLen.
-
- @param secondLen
- the length of the second string.
-
- @param shortenedLen
- the maximum number of characters to compare. This length can be greater
- or smaller than the lengths of the two strings.
-
- @return
- 0 if both substrings are equal, a value less than 0 if the first substring
- is less than the second substring, and a value greater than 0 if the first
- substring is greater than the second substring.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_shortenedCompare_WithLength(
- const sal_Unicode * first, sal_Int32 firstLen, const sal_Unicode * second, sal_Int32 secondLen, sal_Int32 shortenedLen ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings from back to front.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. This function
- cannot be used for language-specific sorting.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second string which is compared with the first one. Need not be
- null-terminated, but must be at least as long as the specified secondLen.
-
- @param secondLen
- the length of the second string.
-
- @return
- 0 if both strings are equal, a value less than 0 if the first string
- compares less than the second string, and a value greater than 0 if the
- first string compares greater than the second string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_reverseCompare_WithLength(
- const sal_Unicode * first, sal_Int32 firstLen, const sal_Unicode * second, sal_Int32 secondLen ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings from back to front for equality.
-
- The comparison is based on the numeric value of each character in the
- strings and returns 'true' if, ans only if, both strings are equal.
- This function cannot be used for language-specific sorting.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified len.
-
- @param second
- the second string which is compared with the first one. Need not be
- null-terminated, but must be at least as long as the specified len.
-
- @param len
- the length of both strings.
-
- @return
- true if both strings are equal, false if they are not equal.
- */
-
-SAL_DLLPUBLIC sal_Bool SAL_CALL rtl_ustr_asciil_reverseEquals_WithLength(
- const sal_Unicode * first, const sal_Char * second, sal_Int32 len ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings, ignoring the case of ASCII characters.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. Character
- values between 65 and 90 (ASCII A--Z) are interpreted as values between 97
- and 122 (ASCII a--z). This function cannot be used for language-specific
- sorting. Both strings must be null-terminated.
-
- @param first
- the first null-terminated string to be compared.
-
- @param second
- the second null-terminated string which is compared with the first one.
-
- @return
- 0 if both strings are equal, a value less than 0 if the first string is
- less than the second string, and a value greater than 0 if the first
- string is greater than the second string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_compareIgnoreAsciiCase(
- const sal_Unicode * first, const sal_Unicode * second ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings, ignoring the case of ASCII characters.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. Character
- values between 65 and 90 (ASCII A--Z) are interpreted as values between 97
- and 122 (ASCII a--z). This function cannot be used for language-specific
- sorting.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second string which is compared with the first one. Need not be
- null-terminated, but must be at least as long as the specified secondLen.
-
- @param secondLen
- the length of the second string.
-
- @return
- 0 if both strings are equal, a value less than 0 if the first string is
- less than the second string, and a value greater than 0 if the first
- string is greater than the second string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_compareIgnoreAsciiCase_WithLength(
- const sal_Unicode * first, sal_Int32 firstLen, const sal_Unicode * second, sal_Int32 secondLen ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings with a maximum count of characters, ignoring the case
- of ASCII characters.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. Character
- values between 65 and 90 (ASCII A--Z) are interpreted as values between 97
- and 122 (ASCII a--z). This function cannot be used for language-specific
- sorting.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second string which is compared with the first one. Need not be
- null-terminated, but must be at least as long as the specified secondLen.
-
- @param secondLen
- the length of the second string.
-
- @param shortenedLen
- the maximum number of characters to compare. This length can be greater
- or smaller than the lengths of the two strings.
-
- @return
- 0 if both substrings are equal, a value less than 0 if the first substring
- is less than the second substring, and a value greater than 0 if the first
- substring is greater than the second substring.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength(
- const sal_Unicode * first, sal_Int32 firstLen, const sal_Unicode * second, sal_Int32 secondLen, sal_Int32 shortenedLen ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. This function
- cannot be used for language-specific sorting. Both strings must be
- null-terminated.
-
- Since this function is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range of 0 and 127, inclusive.
-
- @param first
- the first null-terminated string to be compared.
-
- @param second
- the second null-terminated ASCII string which is compared with the first
- one.
-
- @return
- 0 if both substrings are equal, a value less than 0 if the first substring
- is less than the second substring, and a value greater than 0 if the first
- substring is greater than the second substring.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_ascii_compare(
- const sal_Unicode * first, const sal_Char * second ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. This function
- cannot be used for language-specific sorting.
-
- Since this function is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range of 0 and 127, inclusive.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second null-terminated ASCII string which is compared with the first
- one.
-
- @return
- 0 if both substrings are equal, a value less than 0 if the first substring
- is less than the second substring, and a value greater than 0 if the first
- substring is greater than the second substring.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_ascii_compare_WithLength(
- const sal_Unicode * first, sal_Int32 firstLen, const sal_Char * second ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings with a maximum count of characters.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. This function
- cannot be used for language-specific sorting.
-
- Since this function is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range of 0 and 127, inclusive.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second null-terminated ASCII string which is compared with the first
- one.
-
- @param shortenedLen
- the maximum number of characters to compare. This length can be greater
- or smaller than the lengths of the two strings.
-
- @return
- 0 if both substrings are equal, a value less than 0 if the first substring
- is less than the second substring, and a value greater than 0 if the first
- substring is greater than the second substring.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_ascii_shortenedCompare_WithLength(
- const sal_Unicode * first, sal_Int32 firstLen, const sal_Char * second, sal_Int32 shortenedLen ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings from back to front.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. This function
- cannot be used for language-specific sorting.
-
- Since this function is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range of 0 and 127, inclusive.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second ASCII string which is compared with the first one. Need not be
- null-terminated, but must be at least as long as the specified secondLen.
-
- @param secondLen
- the length of the second string.
-
- @return
- 0 if both strings are equal, a value less than 0 if the first string
- compares less than the second string, and a value greater than 0 if the
- first string compares greater than the second string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_asciil_reverseCompare_WithLength(
- const sal_Unicode * first, sal_Int32 firstLen, const sal_Char * second, sal_Int32 secondLen ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings, ignoring the case of ASCII characters.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. Character
- values between 65 and 90 (ASCII A--Z) are interpreted as values between 97
- and 122 (ASCII a--z). This function cannot be used for language-specific
- sorting. Both strings must be null-terminated.
-
- Since this function is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range of 0 and 127, inclusive.
-
- @param first
- the first null-terminated string to be compared.
-
- @param second
- the second null-terminated ASCII string which is compared with the first
- one.
-
- @return
- 0 if both strings are equal, a value less than 0 if the first string is
- less than the second string, and a value greater than 0 if the first
- string is greater than the second string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_ascii_compareIgnoreAsciiCase(
- const sal_Unicode * first, const sal_Char * second ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings, ignoring the case of ASCII characters.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. Character
- values between 65 and 90 (ASCII A--Z) are interpreted as values between 97
- and 122 (ASCII a--z). This function cannot be used for language-specific
- sorting.
-
- Since this function is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range of 0 and 127, inclusive.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second null-terminated ASCII string which is compared with the first
- one.
-
- @return
- 0 if both strings are equal, a value less than 0 if the first string is
- less than the second string, and a value greater than 0 if the first
- string is greater than the second string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength(
- const sal_Unicode * first, sal_Int32 firstLen, const sal_Char * second ) SAL_THROW_EXTERN_C();
-
-/** Compare two strings, ignoring the case of ASCII characters.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. Character
- values between 65 and 90 (ASCII A--Z) are interpreted as values between 97
- and 122 (ASCII a--z). This function cannot be used for language-specific
- sorting.
-
- Since this function is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range of 0 and 127, inclusive.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second string which is compared with the first one. Need not be
- null-terminated, but must be at least as long as the specified secondLen.
-
- @param secondLen
- the length of the second string.
-
- @return
- 0 if both strings are equal, a value less than 0 if the first string is
- less than the second string, and a value greater than 0 if the first
- string is greater than the second string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_ascii_compareIgnoreAsciiCase_WithLengths(
- sal_Unicode const * first, sal_Int32 firstLen,
- char const * second, sal_Int32 secondLen) SAL_THROW_EXTERN_C();
-
-/** Compare two strings with a maximum count of characters, ignoring the case
- of ASCII characters.
-
- The comparison is based on the numeric value of each character in the
- strings and returns a value indicating their relationship. Character
- values between 65 and 90 (ASCII A--Z) are interpreted as values between 97
- and 122 (ASCII a--z). This function cannot be used for language-specific
- sorting.
-
- Since this function is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range of 0 and 127, inclusive.
-
- @param first
- the first string to be compared. Need not be null-terminated, but must be
- at least as long as the specified firstLen.
-
- @param firstLen
- the length of the first string.
-
- @param second
- the second null-terminated ASCII string which is compared with the first
- one.
-
- @param shortenedLen
- the maximum number of characters to compare. This length can be greater
- or smaller than the lengths of the two strings.
-
- @return
- 0 if both substrings are equal, a value less than 0 if the first substring
- is less than the second substring, and a value greater than 0 if the first
- substring is greater than the second substring.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength(
- const sal_Unicode * first, sal_Int32 firstLen, const sal_Char * second, sal_Int32 shortenedLen ) SAL_THROW_EXTERN_C();
-
-/** Return a hash code for a string.
-
- It is not allowed to store the hash code persistently, because later
- versions could return other hash codes. The string must be
- null-terminated.
-
- @param str
- a null-terminated string.
-
- @return
- a hash code for the given string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_hashCode(
- const sal_Unicode * str ) SAL_THROW_EXTERN_C();
-
-/** Return a hash code for a string.
-
- It is not allowed to store the hash code persistently, because later
- versions could return other hash codes.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
-
- @return
- a hash code for the given string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_hashCode_WithLength(
- const sal_Unicode * str, sal_Int32 len ) SAL_THROW_EXTERN_C();
-
-/** Search for the first occurrence of a character within a string.
-
- The string must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param ch
- the character to be searched for.
-
- @return
- the index (starting at 0) of the first occurrence of the character in the
- string, or -1 if the character does not occur.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_indexOfChar(
- const sal_Unicode * str, sal_Unicode ch ) SAL_THROW_EXTERN_C();
-
-/** Search for the first occurrence of a character within a string.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
-
- @param ch
- the character to be searched for.
-
- @return
- the index (starting at 0) of the first occurrence of the character in the
- string, or -1 if the character does not occur.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_indexOfChar_WithLength(
- const sal_Unicode * str, sal_Int32 len, sal_Unicode ch ) SAL_THROW_EXTERN_C();
-
-/** Search for the last occurrence of a character within a string.
-
- The string must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param ch
- the character to be searched for.
-
- @return
- the index (starting at 0) of the last occurrence of the character in the
- string, or -1 if the character does not occur. The returned value is
- always smaller than the string length.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_lastIndexOfChar(
- const sal_Unicode * str, sal_Unicode ch ) SAL_THROW_EXTERN_C();
-
-/** Search for the last occurrence of a character within a string.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
-
- @param ch
- the character to be searched for.
-
- @return
- the index (starting at 0) of the last occurrence of the character in the
- string, or -1 if the character does not occur. The returned value is
- always smaller than the string length.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_lastIndexOfChar_WithLength(
- const sal_Unicode * str, sal_Int32 len, sal_Unicode ch ) SAL_THROW_EXTERN_C();
-
-/** Search for the first occurrence of a substring within a string.
-
- If subStr is empty, or both str and subStr are empty, -1 is returned.
- Both strings must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param subStr
- the null-terminated substring to be searched for.
-
- @return
- the index (starting at 0) of the first character of the first occurrence
- of the substring within the string, or -1 if the substring does not occur.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_indexOfStr(
- const sal_Unicode * str, const sal_Unicode * subStr ) SAL_THROW_EXTERN_C();
-
-/** Search for the first occurrence of a substring within a string.
-
- If subStr is empty, or both str and subStr are empty, -1 is returned.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
-
- @param subStr
- the substring to be searched for. Need not be null-terminated, but must
- be at least as long as the specified subLen.
-
- @param subLen
- the length of the substring.
-
- @return
- the index (starting at 0) of the first character of the first occurrence
- of the substring within the string, or -1 if the substring does not occur.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_indexOfStr_WithLength(
- const sal_Unicode * str, sal_Int32 len, const sal_Unicode * subStr, sal_Int32 subLen ) SAL_THROW_EXTERN_C();
-
-/** Search for the first occurrence of an ASCII substring within a string.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string; must be non-negative.
-
- @param subStr
- the substring to be searched for. Need not be null-terminated, but must
- be at least as long as the specified subLen. Must only contain characters
- in the ASCII range 0x00--7F.
-
- @param subLen
- the length of the substring; must be non-negative.
-
- @return
- the index (starting at 0) of the first character of the first occurrence
- of the substring within the string, or -1 if the substring does not occur.
- If subLen is zero, -1 is returned.
-
- @since UDK 3.2.7
-*/
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_indexOfAscii_WithLength(
- sal_Unicode const * str, sal_Int32 len,
- char const * subStr, sal_Int32 subLen) SAL_THROW_EXTERN_C();
-
-/** Search for the last occurrence of a substring within a string.
-
- If subStr is empty, or both str and subStr are empty, -1 is returned.
- Both strings must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param subStr
- the null-terminated substring to be searched for.
-
- @return
- the index (starting at 0) of the first character of the last occurrence
- of the substring within the string, or -1 if the substring does not occur.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_lastIndexOfStr(
- const sal_Unicode * str, const sal_Unicode * subStr ) SAL_THROW_EXTERN_C();
-
-/** Search for the last occurrence of a substring within a string.
-
- If subStr is empty, or both str and subStr are empty, -1 is returned.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
-
- @param subStr
- the substring to be searched for. Need not be null-terminated, but must
- be at least as long as the specified subLen.
-
- @param subLen
- the length of the substring.
-
- @return
- the index (starting at 0) of the first character of the first occurrence
- of the substring within the string, or -1 if the substring does not occur.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_lastIndexOfStr_WithLength(
- const sal_Unicode * str, sal_Int32 len, const sal_Unicode * subStr, sal_Int32 subLen ) SAL_THROW_EXTERN_C();
-
-/** Search for the last occurrence of an ASCII substring within a string.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string; must be non-negative.
-
- @param subStr
- the substring to be searched for. Need not be null-terminated, but must
- be at least as long as the specified subLen. Must only contain characters
- in the ASCII range 0x00--7F.
-
- @param subLen
- the length of the substring; must be non-negative.
-
- @return
- the index (starting at 0) of the first character of the last occurrence
- of the substring within the string, or -1 if the substring does not occur.
- If subLen is zero, -1 is returned.
-
- @since UDK 3.2.7
-*/
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_lastIndexOfAscii_WithLength(
- sal_Unicode const * str, sal_Int32 len,
- char const * subStr, sal_Int32 subLen) SAL_THROW_EXTERN_C();
-
-/** Replace all occurrences of a single character within a string.
-
- If oldChar does not occur within str, then the string is not modified.
- The string must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param oldChar
- the old character.
-
- @param newChar
- the new character.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_ustr_replaceChar(
- sal_Unicode * str, sal_Unicode oldChar, sal_Unicode newChar ) SAL_THROW_EXTERN_C();
-
-/** Replace all occurrences of a single character within a string.
-
- If oldChar does not occur within str, then the string is not modified.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
-
- @param oldChar
- the old character.
-
- @param newChar
- the new character.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_ustr_replaceChar_WithLength(
- sal_Unicode * str, sal_Int32 len, sal_Unicode oldChar, sal_Unicode newChar ) SAL_THROW_EXTERN_C();
-
-/** Convert all ASCII uppercase letters to lowercase within a string.
-
- The characters with values between 65 and 90 (ASCII A--Z) are replaced
- with values between 97 and 122 (ASCII a--z). The string must be
- null-terminated.
-
- @param str
- a null-terminated string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_ustr_toAsciiLowerCase(
- sal_Unicode * str ) SAL_THROW_EXTERN_C();
-
-/** Convert all ASCII uppercase letters to lowercase within a string.
-
- The characters with values between 65 and 90 (ASCII A--Z) are replaced
- with values between 97 and 122 (ASCII a--z).
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_ustr_toAsciiLowerCase_WithLength(
- sal_Unicode * str, sal_Int32 len ) SAL_THROW_EXTERN_C();
-
-/** Convert all ASCII lowercase letters to uppercase within a string.
-
- The characters with values between 97 and 122 (ASCII a--z) are replaced
- with values between 65 and 90 (ASCII A--Z). The string must be
- null-terminated.
-
- @param str
- a null-terminated string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_ustr_toAsciiUpperCase(
- sal_Unicode * str ) SAL_THROW_EXTERN_C();
-
-/** Convert all ASCII lowercase letters to uppercase within a string.
-
- The characters with values between 97 and 122 (ASCII a--z) are replaced
- with values between 65 and 90 (ASCII A--Z).
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the length of the string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_ustr_toAsciiUpperCase_WithLength(
- sal_Unicode * str, sal_Int32 len ) SAL_THROW_EXTERN_C();
-
-/** Remove white space from both ends of a string.
-
- All characters with values less than or equal to 32 (the space character)
- are considered to be white space. This function cannot be used for
- language-specific operations. The string must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @return
- the new length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_trim(
- sal_Unicode * str ) SAL_THROW_EXTERN_C();
-
-/** Remove white space from both ends of the string.
-
- All characters with values less than or equal to 32 (the space character)
- are considered to be white space. This function cannot be used for
- language-specific operations. The string must be null-terminated.
-
- @param str
- a string. Need not be null-terminated, but must be at least as long as
- the specified len.
-
- @param len
- the original length of the string.
-
- @return
- the new length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_trim_WithLength(
- sal_Unicode * str, sal_Int32 len ) SAL_THROW_EXTERN_C();
-
-/** Create the string representation of a boolean.
-
- If b is true, the buffer is filled with the string "true" and 5 is
- returned. If b is false, the buffer is filled with the string "false" and
- 6 is returned. This function cannot be used for language-specific
- operations.
-
- @param str
- a buffer that is big enough to hold the result and the terminating NUL
- character. You should use the RTL_USTR_MAX_VALUEOFBOOLEAN define to
- create a buffer that is big enough.
-
- @param b
- a boolean value.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_valueOfBoolean(
- sal_Unicode * str, sal_Bool b ) SAL_THROW_EXTERN_C();
-#define RTL_USTR_MAX_VALUEOFBOOLEAN RTL_STR_MAX_VALUEOFBOOLEAN
-
-/** Create the string representation of a character.
-
- @param str
- a buffer that is big enough to hold the result and the terminating NUL
- character. You should use the RTL_USTR_MAX_VALUEOFCHAR define to create a
- buffer that is big enough.
-
- @param ch
- a character value.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_valueOfChar(
- sal_Unicode * str, sal_Unicode ch ) SAL_THROW_EXTERN_C();
-#define RTL_USTR_MAX_VALUEOFCHAR RTL_STR_MAX_VALUEOFCHAR
-
-/** Create the string representation of an integer.
-
- This function cannot be used for language-specific operations.
-
- @param str
- a buffer that is big enough to hold the result and the terminating NUL
- character. You should use the RTL_USTR_MAX_VALUEOFINT32 define to create
- a buffer that is big enough.
-
- @param i
- an integer value.
-
- @param radix
- the radix. Must be between RTL_USTR_MIN_RADIX (2) and RTL_USTR_MAX_RADIX
- (36), inclusive.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_valueOfInt32(
- sal_Unicode * str, sal_Int32 i, sal_Int16 radix ) SAL_THROW_EXTERN_C();
-#define RTL_USTR_MIN_RADIX RTL_STR_MIN_RADIX
-#define RTL_USTR_MAX_RADIX RTL_STR_MAX_RADIX
-#define RTL_USTR_MAX_VALUEOFINT32 RTL_STR_MAX_VALUEOFINT32
-
-/** Create the string representation of a long integer.
-
- This function cannot be used for language-specific operations.
-
- @param str
- a buffer that is big enough to hold the result and the terminating NUL
- character. You should use the RTL_USTR_MAX_VALUEOFINT64 define to create
- a buffer that is big enough.
-
- @param l
- a long integer value.
-
- @param radix
- the radix. Must be between RTL_USTR_MIN_RADIX (2) and RTL_USTR_MAX_RADIX
- (36), inclusive.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_valueOfInt64(
- sal_Unicode * str, sal_Int64 l, sal_Int16 radix ) SAL_THROW_EXTERN_C();
-#define RTL_USTR_MAX_VALUEOFINT64 RTL_STR_MAX_VALUEOFINT64
-
-/** Create the string representation of an unsigned long integer.
-
- This function cannot be used for language-specific operations.
-
- @param str
- a buffer that is big enough to hold the result and the terminating NUL
- character. You should use the RTL_USTR_MAX_VALUEOFUINT64 define to create
- a buffer that is big enough.
-
- @param l
- a long integer value.
-
- @param radix
- the radix. Must be between RTL_USTR_MIN_RADIX (2) and RTL_USTR_MAX_RADIX
- (36), inclusive.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_valueOfUInt64(
- sal_Unicode * str, sal_uInt64 l, sal_Int16 radix ) SAL_THROW_EXTERN_C();
-#define RTL_USTR_MAX_VALUEOFINT64 RTL_STR_MAX_VALUEOFINT64
-
-/** Create the string representation of a float.
-
- This function cannot be used for language-specific conversion.
-
- @param str
- a buffer that is big enough to hold the result and the terminating NUL
- character. You should use the RTL_USTR_MAX_VALUEOFFLOAT define to create
- a buffer that is big enough.
-
- @param f
- a float value.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_valueOfFloat(
- sal_Unicode * str, float f ) SAL_THROW_EXTERN_C();
-#define RTL_USTR_MAX_VALUEOFFLOAT RTL_STR_MAX_VALUEOFFLOAT
-
-/** Create the string representation of a double.
-
- This function cannot be used for language-specific conversion.
-
- @param str
- a buffer that is big enough to hold the result and the terminating NUL
- character. You should use the RTL_USTR_MAX_VALUEOFDOUBLE define to create
- a buffer that is big enough.
-
- @param d
- a double value.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_valueOfDouble(
- sal_Unicode * str, double d ) SAL_THROW_EXTERN_C();
-#define RTL_USTR_MAX_VALUEOFDOUBLE RTL_STR_MAX_VALUEOFDOUBLE
-
-/** Interpret a string as a boolean.
-
- This function cannot be used for language-specific conversion. The string
- must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @return
- true if the string is "1" or "true" in any ASCII case, false otherwise.
- */
-SAL_DLLPUBLIC sal_Bool SAL_CALL rtl_ustr_toBoolean(
- const sal_Unicode * str ) SAL_THROW_EXTERN_C();
-
-/** Interpret a string as an integer.
-
- This function cannot be used for language-specific conversion. The string
- must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param radix
- the radix. Must be between RTL_USTR_MIN_RADIX (2) and RTL_USTR_MAX_RADIX
- (36), inclusive.
-
- @return
- the integer value represented by the string, or 0 if the string does not
- represent an integer.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_ustr_toInt32(
- const sal_Unicode * str, sal_Int16 radix ) SAL_THROW_EXTERN_C();
-
-/** Interpret a string as a long integer.
-
- This function cannot be used for language-specific conversion. The string
- must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param radix
- the radix. Must be between RTL_USTR_MIN_RADIX (2) and RTL_USTR_MAX_RADIX
- (36), inclusive.
-
- @return
- the long integer value represented by the string, or 0 if the string does
- not represent a long integer.
- */
-SAL_DLLPUBLIC sal_Int64 SAL_CALL rtl_ustr_toInt64(
- const sal_Unicode * str, sal_Int16 radix ) SAL_THROW_EXTERN_C();
-
-/** Interpret a string as an unsigned long integer.
-
- This function cannot be used for language-specific conversion. The string
- must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @param radix
- the radix. Must be between RTL_USTR_MIN_RADIX (2) and RTL_USTR_MAX_RADIX
- (36), inclusive.
-
- @return
- the unsigned long integer value represented by the string, or 0 if the
- string does not represent an unsigned long integer.
-
- @since LibreOffice 4.1
- */
-SAL_DLLPUBLIC sal_uInt64 SAL_CALL rtl_ustr_toUInt64(
- const sal_Unicode * str, sal_Int16 radix ) SAL_THROW_EXTERN_C();
-
-/** Interpret a string as a float.
-
- This function cannot be used for language-specific conversion. The string
- must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @return
- the float value represented by the string, or 0.0 if the string does not
- represent a float.
- */
-SAL_DLLPUBLIC float SAL_CALL rtl_ustr_toFloat(
- const sal_Unicode * str ) SAL_THROW_EXTERN_C();
-
-/** Interpret a string as a double.
-
- This function cannot be used for language-specific conversion. The string
- must be null-terminated.
-
- @param str
- a null-terminated string.
-
- @return
- the float value represented by the string, or 0.0 if the string does not
- represent a double.
- */
-SAL_DLLPUBLIC double SAL_CALL rtl_ustr_toDouble(
- const sal_Unicode * str ) SAL_THROW_EXTERN_C();
-
-/* ======================================================================= */
-
-#if defined(SAL_W32)
-#pragma pack(push, 4)
-#endif
-
-/** @cond INTERNAL */
-/** The implementation of a Unicode string.
-*/
-typedef struct _rtl_uString
-{
- oslInterlockedCount refCount; /* opaque */
- sal_Int32 length;
- sal_Unicode buffer[1];
-} rtl_uString;
-/** @endcond */
-
-#if defined(SAL_W32)
-#pragma pack(pop)
-#endif
-
-/* ----------------------------------------------------------------------- */
-
-/** Increment the reference count of a string.
-
- @param str
- a string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_acquire(
- rtl_uString * str ) SAL_THROW_EXTERN_C();
-
-/** Decrement the reference count of a string.
-
- If the count goes to zero than the string data is deleted.
-
- @param str
- a string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_release(
- rtl_uString * str ) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string containing no characters.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_new(
- rtl_uString ** newStr ) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string containing space for a given number of characters.
-
- The reference count of the new string will be 1. The length of the string
- will be nLen. This function does not handle out-of-memory conditions.
-
- For nLen < 0 or failed allocation this method returns NULL.
-
- The characters of the capacity are not cleared, and the length is set to
- nLen, unlike the similar method of rtl_uString_new_WithLength which
- zeros out the buffer, and sets the length to 0. So should be somewhat
- more efficient for allocating a new string.
-
- call rtl_uString_release to release the string
- alternatively pass ownership to an OUString with
- rtl::OUString(newStr, SAL_NO_ACQUIRE);
-
- @param[in] nLen the number of characters.
- @return pointer to the new string.
-
- @since LibreOffice 4.1
- */
-SAL_DLLPUBLIC rtl_uString * SAL_CALL rtl_uString_alloc(sal_Int32 nLen) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string containing space for a given number of characters.
-
- If len is greater than zero, the reference count of the new string will be
- 1. The values of all characters are set to 0 and the length of the string
- is 0. This function does not handle out-of-memory conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param nLen
- the number of characters.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_new_WithLength(
- rtl_uString ** newStr, sal_Int32 nLen ) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string that contains a copy of another string.
-
- If the length of value is greater than zero, the reference count of the
- new string will be 1. This function does not handle out-of-memory
- conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param value
- a valid string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newFromString(
- rtl_uString ** newStr, const rtl_uString * value ) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string that contains a copy of a character array.
-
- If the length of value is greater than zero, the reference count of the
- new string will be 1. This function does not handle out-of-memory
- conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param value
- a null-terminated character array.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newFromStr(
- rtl_uString ** newStr, const sal_Unicode * value ) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string that contains a copy of a character array.
-
- If the length of value is greater than zero, the reference count of the
- new string will be 1. This function does not handle out-of-memory
- conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param value
- a character array. Need not be null-terminated, but must be at least as
- long as the specified len.
-
- @param len
- the length of the character array.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newFromStr_WithLength(
- rtl_uString ** newStr, const sal_Unicode * value, sal_Int32 len ) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string that is a substring of this string.
-
- The substring begins at the specified beginIndex and contains count
- characters. Meaningless combinations such as negative beginIndex,
- or beginIndex + count greater than the length of the string have
- undefined behaviour.
-
- @param[out] newStr the specified substring.
- @param[in] from the String to take the substring from.
- @param[in] beginIndex the beginning index, inclusive.
- @param[in] count the number of characters.
- @return the specified substring.
-
- @since LibreOffice 4.0
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newFromSubString(
- rtl_uString ** newStr, const rtl_uString * from,
- sal_Int32 beginIndex, sal_Int32 count ) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string that contains a copy of a character array.
-
- If the length of value is greater than zero, the reference count of the
- new string will be 1. This function does not handle out-of-memory
- conditions.
-
- Since this function is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range of 0 and 127, inclusive.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param value
- a null-terminated ASCII character array.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newFromAscii(
- rtl_uString ** newStr, const sal_Char * value ) SAL_THROW_EXTERN_C();
-
-/**
- @internal
- @since LibreOffice 3.6
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newFromLiteral(
- rtl_uString ** newStr, const sal_Char * value, sal_Int32 len,
- sal_Int32 allocExtra ) SAL_THROW_EXTERN_C();
-
-/** Allocate a new string from an array of Unicode code points.
-
- @param newString
- a non-null pointer to a (possibly null) rtl_uString pointer, which (if
- non-null) will have been passed to rtl_uString_release before the function
- returns. Upon return, points to the newly allocated string or to null if
- there was either an out-of-memory condition or the resulting number of
- UTF-16 code units would have been larger than SAL_MAX_INT32. The newly
- allocated string (if any) must ultimately be passed to rtl_uString_release.
-
- @param codePoints
- an array of at least codePointCount code points, which each must be in the
- range from 0 to 0x10FFFF, inclusive. May be null if codePointCount is zero.
-
- @param codePointCount
- the non-negative number of code points.
-
- @since UDK 3.2.7
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newFromCodePoints(
- rtl_uString ** newString, sal_uInt32 const * codePoints,
- sal_Int32 codePointCount) SAL_THROW_EXTERN_C();
-
-/** Assign a new value to a string.
-
- First releases any value str might currently hold, then acquires
- rightValue.
-
- @param str
- pointer to the string. The pointed-to data must be null or a valid
- string.
-
- @param rightValue
- a valid string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_assign(
- rtl_uString ** str, rtl_uString * rightValue ) SAL_THROW_EXTERN_C();
-
-/** Return the length of a string.
-
- The length is equal to the number of characters in the string.
-
- @param str
- a valid string.
-
- @return
- the length of the string.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_uString_getLength(
- const rtl_uString * str ) SAL_THROW_EXTERN_C();
-
-/** Return a pointer to the underlying character array of a string.
-
- @param str
- a valid string.
-
- @return
- a pointer to the null-terminated character array.
- */
-SAL_DLLPUBLIC sal_Unicode * SAL_CALL rtl_uString_getStr(
- rtl_uString * str ) SAL_THROW_EXTERN_C();
-
-/** Create a new string that is the concatenation of two other strings.
-
- The new string does not necessarily have a reference count of 1 (in cases
- where one of the two other strings is empty), so it must not be modified
- without checking the reference count. This function does not handle
- out-of-memory conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param left
- a valid string.
-
- @param right
- a valid string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newConcat(
- rtl_uString ** newStr, rtl_uString * left, rtl_uString * right ) SAL_THROW_EXTERN_C();
-
-/** Create a new string by replacing a substring of another string.
-
- The new string results from replacing a number of characters (count),
- starting at the specified position (index) in the original string (str),
- with some new substring (subStr). If subStr is null, than only a number
- of characters is deleted.
-
- The new string does not necessarily have a reference count of 1, so it
- must not be modified without checking the reference count. This function
- does not handle out-of-memory conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param str
- a valid string.
-
- @param idx
- the index into str at which to start replacement. Must be between 0 and
- the length of str, inclusive.
-
- @param count
- the number of characters to remove. Must not be negative, and the sum of
- index and count must not exceed the length of str.
-
- @param subStr
- either null or a valid string to be inserted.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newReplaceStrAt(
- rtl_uString ** newStr, rtl_uString * str, sal_Int32 idx, sal_Int32 count, rtl_uString * subStr ) SAL_THROW_EXTERN_C();
-
-/** Create a new string by replacing all occurrences of a single character
- within another string.
-
- The new string results from replacing all occurrences of oldChar in str
- with newChar.
-
- The new string does not necessarily have a reference count of 1 (in cases
- where oldChar does not occur in str), so it must not be modified without
- checking the reference count. This function does not handle out-of-memory
- conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param str
- a valid string.
-
- @param oldChar
- the old character.
-
- @param newChar
- the new character.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newReplace(
- rtl_uString ** newStr, rtl_uString * str, sal_Unicode oldChar, sal_Unicode newChar ) SAL_THROW_EXTERN_C();
-
-/** Create a new string by replacing the first occurrence of a given substring
- with another substring.
-
- @param[in, out] newStr pointer to the new string; must not be null; must
- point to null or a valid rtl_uString
-
- @param str pointer to the original string; must not be null
-
- @param from pointer to the substring to be replaced; must not be null
-
- @param to pointer to the replacing substring; must not be null
-
- @param[in,out] index pointer to a start index, must not be null; upon entry
- to the function its value is the index into the original string at which to
- start searching for the \p from substring, the value must be non-negative
- and not greater than the original string's length; upon exit from the
- function its value is the index into the original string at which the
- replacement took place or -1 if no replacement took place
-
- @since LibreOffice 3.6
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newReplaceFirst(
- rtl_uString ** newStr, rtl_uString * str, rtl_uString const * from,
- rtl_uString const * to, sal_Int32 * index) SAL_THROW_EXTERN_C();
-
-/** Create a new string by replacing the first occurrence of a given substring
- with another substring.
-
- @param[in, out] newStr pointer to the new string; must not be null; must
- point to null or a valid rtl_uString
-
- @param str pointer to the original string; must not be null
-
- @param from pointer to the substring to be replaced; must not be null and
- must point to memory of at least \p fromLength ASCII bytes
-
- @param fromLength the length of the \p from substring; must be non-negative
-
- @param to pointer to the replacing substring; must not be null
-
- @param[in,out] index pointer to a start index, must not be null; upon entry
- to the function its value is the index into the original string at which to
- start searching for the \p from substring, the value must be non-negative
- and not greater than the original string's length; upon exit from the
- function its value is the index into the original string at which the
- replacement took place or -1 if no replacement took place
-
- @since LibreOffice 3.6
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newReplaceFirstAsciiL(
- rtl_uString ** newStr, rtl_uString * str, char const * from,
- sal_Int32 fromLength, rtl_uString const * to, sal_Int32 * index)
- SAL_THROW_EXTERN_C();
-
-/** Create a new string by replacing the first occurrence of a given substring
- with another substring.
-
- @param[in, out] newStr pointer to the new string; must not be null; must
- point to null or a valid rtl_uString
-
- @param str pointer to the original string; must not be null
-
- @param from pointer to the substring to be replaced; must not be null and
- must point to memory of at least \p fromLength ASCII bytes
-
- @param fromLength the length of the \p from substring; must be non-negative
-
- @param to pointer to the substring to be replaced; must not be null and
- must point to memory of at least \p toLength ASCII bytes
-
- @param toLength the length of the \p to substring; must be non-negative
-
- @param[in,out] index pointer to a start index, must not be null; upon entry
- to the function its value is the index into the original string at which to
- start searching for the \p from substring, the value must be non-negative
- and not greater than the original string's length; upon exit from the
- function its value is the index into the original string at which the
- replacement took place or -1 if no replacement took place
-
- @since LibreOffice 3.6
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newReplaceFirstAsciiLAsciiL(
- rtl_uString ** newStr, rtl_uString * str, char const * from,
- sal_Int32 fromLength, char const * to, sal_Int32 toLength,
- sal_Int32 * index) SAL_THROW_EXTERN_C();
-
-/** Create a new string by replacing all occurrences of a given substring with
- another substring.
-
- Replacing subsequent occurrences picks up only after a given replacement.
- That is, replacing from "xa" to "xx" in "xaa" results in "xxa", not "xxx".
-
- @param[in, out] newStr pointer to the new string; must not be null; must
- point to null or a valid rtl_uString
-
- @param str pointer to the original string; must not be null
-
- @param from pointer to the substring to be replaced; must not be null
-
- @param to pointer to the replacing substring; must not be null
-
- @since LibreOffice 3.6
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newReplaceAll(
- rtl_uString ** newStr, rtl_uString * str, rtl_uString const * from,
- rtl_uString const * to) SAL_THROW_EXTERN_C();
-
-/** Create a new string by replacing all occurrences of a given substring with
- another substring.
-
- Replacing subsequent occurrences picks up only after a given replacement.
- That is, replacing from "xa" to "xx" in "xaa" results in "xxa", not "xxx".
-
- @param[in, out] newStr pointer to the new string; must not be null; must
- point to null or a valid rtl_uString
-
- @param str pointer to the original string; must not be null
-
- @param from pointer to the substring to be replaced; must not be null
-
- @param to pointer to the replacing substring; must not be null
-
- @param fromIndex the position in the string where we will begin searching
-
- @since LibreOffice 4.0
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newReplaceAllFromIndex(
- rtl_uString ** newStr, rtl_uString * str, rtl_uString const * from,
- rtl_uString const * to, sal_Int32 fromIndex) SAL_THROW_EXTERN_C();
-
-/** Create a new string by replacing all occurrences of a given substring with
- another substring.
-
- Replacing subsequent occurrences picks up only after a given replacement.
- That is, replacing from "xa" to "xx" in "xaa" results in "xxa", not "xxx".
-
- @param[in, out] newStr pointer to the new string; must not be null; must
- point to null or a valid rtl_uString
-
- @param str pointer to the original string; must not be null
-
- @param from pointer to the substring to be replaced; must not be null and
- must point to memory of at least \p fromLength ASCII bytes
-
- @param fromLength the length of the \p from substring; must be non-negative
-
- @param to pointer to the replacing substring; must not be null
-
- @since LibreOffice 3.6
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newReplaceAllAsciiL(
- rtl_uString ** newStr, rtl_uString * str, char const * from,
- sal_Int32 fromLength, rtl_uString const * to) SAL_THROW_EXTERN_C();
-
-/** Create a new string by replacing all occurrences of a given substring with
- another substring.
-
- Replacing subsequent occurrences picks up only after a given replacement.
- That is, replacing from "xa" to "xx" in "xaa" results in "xxa", not "xxx".
-
- @param[in, out] newStr pointer to the new string; must not be null; must
- point to null or a valid rtl_uString
-
- @param str pointer to the original string; must not be null
-
- @param from pointer to the substring to be replaced; must not be null and
- must point to memory of at least \p fromLength ASCII bytes
-
- @param fromLength the length of the \p from substring; must be non-negative
-
- @param to pointer to the substring to be replaced; must not be null and
- must point to memory of at least \p toLength ASCII bytes
-
- @param toLength the length of the \p to substring; must be non-negative
-
- @since LibreOffice 3.6
-*/
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newReplaceAllAsciiLAsciiL(
- rtl_uString ** newStr, rtl_uString * str, char const * from,
- sal_Int32 fromLength, char const * to, sal_Int32 toLength)
- SAL_THROW_EXTERN_C();
-
-/** Create a new string by converting all ASCII uppercase letters to lowercase
- within another string.
-
- The new string results from replacing all characters with values between
- 65 and 90 (ASCII A--Z) by values between 97 and 122 (ASCII a--z).
-
- This function cannot be used for language-specific conversion. The new
- string does not necessarily have a reference count of 1 (in cases where
- no characters need to be converted), so it must not be modified without
- checking the reference count. This function does not handle out-of-memory
- conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param str
- a valid string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newToAsciiLowerCase(
- rtl_uString ** newStr, rtl_uString * str ) SAL_THROW_EXTERN_C();
-
-/** Create a new string by converting all ASCII lowercase letters to uppercase
- within another string.
-
- The new string results from replacing all characters with values between
- 97 and 122 (ASCII a--z) by values between 65 and 90 (ASCII A--Z).
-
- This function cannot be used for language-specific conversion. The new
- string does not necessarily have a reference count of 1 (in cases where
- no characters need to be converted), so it must not be modified without
- checking the reference count. This function does not handle out-of-memory
- conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param str
- a valid string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newToAsciiUpperCase(
- rtl_uString ** newStr, rtl_uString * str ) SAL_THROW_EXTERN_C();
-
-/** Create a new string by removing white space from both ends of another
- string.
-
- The new string results from removing all characters with values less than
- or equal to 32 (the space character) form both ends of str.
-
- This function cannot be used for language-specific conversion. The new
- string does not necessarily have a reference count of 1 (in cases where
- no characters need to be removed), so it must not be modified without
- checking the reference count. This function does not handle out-of-memory
- conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param str
- a valid string.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_newTrim(
- rtl_uString ** newStr, rtl_uString * str ) SAL_THROW_EXTERN_C();
-
-/** Create a new string by extracting a single token from another string.
-
- Starting at index, the token's next token is searched for. If there is no
- such token, the result is an empty string. Otherwise, all characters from
- the start of that token and up to, but not including the next occurrence
- of cTok make up the resulting token. The return value is the position of
- the next token, or -1 if no more tokens follow.
-
- Example code could look like
- rtl_uString * pToken = NULL;
- sal_Int32 nIndex = 0;
- do
- {
- ...
- nIndex = rtl_uString_getToken(&pToken, pStr, 0, ';', nIndex);
- ...
- }
- while (nIndex >= 0);
-
- The new string does not necessarily have a reference count of 1, so it
- must not be modified without checking the reference count. This function
- does not handle out-of-memory conditions.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string. If either token or index is negative, an empty token is stored in
- newStr (and -1 is returned).
-
- @param str
- a valid string.
-
- @param token
- the number of the token to return, starting at index.
-
- @param cTok
- the character that separates the tokens.
-
- @param idx
- the position at which searching for the token starts. Must not be greater
- than the length of str.
-
- @return
- the index of the next token, or -1 if no more tokens follow.
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_uString_getToken(
- rtl_uString ** newStr , rtl_uString * str, sal_Int32 token, sal_Unicode cTok, sal_Int32 idx ) SAL_THROW_EXTERN_C();
-
-/* ======================================================================= */
-
-/** Supply an ASCII string literal together with its length and text encoding.
-
- This macro can be used to compute (some of) the arguments in function calls
- like rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("foo")).
-
- @param constAsciiStr
- must be an expression of type "(possibly cv-qualified reference to) array of
- (possibly cv-qualified) char." Each element of the referenced array must
- represent an ASCII value in the range 0x00--0x7F. The last element of the
- referenced array is not considered part of the represented ASCII string, and
- its value should be 0x00. Depending on where this macro is used, the nature
- of the supplied expression might be further restricted.
-*/
-// The &foo[0] trick is intentional, it makes sure the type is char* or const char*
-// (plain cast to const char* would not work with non-const char foo[]="a", which seems to be allowed).
-// This is to avoid mistaken use with functions that accept string literals
-// (i.e. const char (&)[N]) where usage of this macro otherwise could match
-// the argument and a following int argument with a default value (e.g. OUString::match()).
-#define RTL_CONSTASCII_USTRINGPARAM( constAsciiStr ) (&(constAsciiStr)[0]), \
- ((sal_Int32)(SAL_N_ELEMENTS(constAsciiStr)-1)), RTL_TEXTENCODING_ASCII_US
-
-/* ======================================================================= */
-
-/* predefined constants for String-Conversion */
-#define OSTRING_TO_OUSTRING_CVTFLAGS (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_MAPTOPRIVATE |\
- RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_DEFAULT |\
- RTL_TEXTTOUNICODE_FLAGS_INVALID_DEFAULT)
-
-/* ----------------------------------------------------------------------- */
-
-/** Create a new Unicode string by converting a byte string, using a specific
- text encoding.
-
- The lengths of the byte string and the Unicode string may differ (e.g.,
- for double-byte encodings, UTF-7, UTF-8).
-
- If the length of the byte string is greater than zero, the reference count
- of the new string will be 1.
-
- If an out-of-memory condition occurs, newStr will point to a null pointer
- upon return.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- @param str
- a byte character array. Need not be null-terminated, but must be at
- least as long as the specified len.
-
- @param len
- the length of the byte character array.
-
- @param encoding
- the text encoding to use for conversion.
-
- @param convertFlags
- flags which control the conversion. Either use
- OSTRING_TO_OUSTRING_CVTFLAGS, or see
- <http://udk.openoffice.org/cpp/man/spec/textconversion.html> for more
- details.
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_string2UString(
- rtl_uString ** newStr, const sal_Char * str, sal_Int32 len, rtl_TextEncoding encoding, sal_uInt32 convertFlags ) SAL_THROW_EXTERN_C();
-
-/* ======================================================================= */
-/* Interning methods */
-
-/** Return a canonical representation for a string.
-
- A pool of strings, initially empty is maintained privately
- by the string class. On invocation, if present in the pool
- the original string will be returned. Otherwise this string,
- or a copy thereof will be added to the pool and returned.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- If an out-of-memory condition occurs, newStr will point to a null pointer
- upon return.
-
- @param str
- pointer to the string to be interned.
-
- @since UDK 3.2.7
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_intern(
- rtl_uString ** newStr, rtl_uString * str) SAL_THROW_EXTERN_C();
-
-/** Return a canonical representation for a string.
-
- A pool of strings, initially empty is maintained privately
- by the string class. On invocation, if present in the pool
- the original string will be returned. Otherwise this string,
- or a copy thereof will be added to the pool and returned.
-
- @param newStr
- pointer to the new string. The pointed-to data must be null or a valid
- string.
-
- If an out-of-memory condition occurs, newStr will point to a null pointer
- upon return.
-
- @param str
- a byte character array. Need not be null-terminated, but must be at
- least as long as the specified len.
-
- @param len
- the length of the byte character array.
-
- @param encoding
- the text encoding to use for conversion.
-
- @param convertFlags
- flags which control the conversion. Either use
- OSTRING_TO_OUSTRING_CVTFLAGS, or see
- <http://udk.openoffice.org/cpp/man/spec/textconversion.html> for more
- details.
-
- @param pInfo
- pointer to return conversion status in, or NULL.
-
- @since UDK 3.2.7
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_internConvert(
- rtl_uString ** newStr,
- const sal_Char * str,
- sal_Int32 len,
- rtl_TextEncoding encoding,
- sal_uInt32 convertFlags,
- sal_uInt32 *pInfo) SAL_THROW_EXTERN_C();
-
-/** Iterate through a string based on code points instead of UTF-16 code units.
-
- See Chapter 3 of The Unicode Standard 5.0 (Addison--Wesley, 2006) for
- definitions of the various terms used in this description.
-
- The given string is interpreted as a sequence of zero or more UTF-16 code
- units. For each index into this sequence (from zero to one less than the
- length of the sequence, inclusive), a code point represented starting at the
- given index is computed as follows:
-
- - If the UTF-16 code unit addressed by the index constitutes a well-formed
- UTF-16 code unit sequence, the computed code point is the scalar value
- encoded by that UTF-16 code unit sequence.
-
- - Otherwise, if the index is at least two UTF-16 code units away from the
- end of the sequence, and the sequence of two UTF-16 code units addressed by
- the index constitutes a well-formed UTF-16 code unit sequence, the computed
- code point is the scalar value encoded by that UTF-16 code unit sequence.
-
- - Otherwise, the computed code point is the UTF-16 code unit addressed by
- the index. (This last case catches unmatched surrogates as well as indices
- pointing into the middle of surrogate pairs.)
-
- @param string
- pointer to a valid string; must not be null.
-
- @param indexUtf16
- pointer to a UTF-16 based index into the given string; must not be null. On
- entry, the index must be in the range from zero to the length of the string
- (in UTF-16 code units), inclusive. Upon successful return, the index will
- be updated to address the UTF-16 code unit that is the given
- incrementCodePoints away from the initial index.
-
- @param incrementCodePoints
- the number of code points to move the given *indexUtf16. If non-negative,
- moving is done after determining the code point at the index. If negative,
- moving is done before determining the code point at the (then updated)
- index. The value must be such that the resulting UTF-16 based index is in
- the range from zero to the length of the string (in UTF-16 code units),
- inclusive.
-
- @return
- the code point (an integer in the range from 0 to 0x10FFFF, inclusive) that
- is represented within the string starting at the index computed as follows:
- If incrementCodePoints is non-negative, the index is the initial value of
- *indexUtf16; if incrementCodePoints is negative, the index is the updated
- value of *indexUtf16. In either case, the computed index must be in the
- range from zero to one less than the length of the string (in UTF-16 code
- units), inclusive.
-
- @since UDK 3.2.7
-*/
-SAL_DLLPUBLIC sal_uInt32 SAL_CALL rtl_uString_iterateCodePoints(
- rtl_uString const * string, sal_Int32 * indexUtf16,
- sal_Int32 incrementCodePoints);
-
-/** Converts a byte string to a Unicode string, signalling failure.
-
- @param target
- An out parameter receiving the converted string. Must not be null itself,
- and must contain either null or a pointer to a valid rtl_uString; the
- contents are unspecified if conversion fails (rtl_convertStringToUString
- returns false).
-
- @param source
- The byte string. May only be null if length is zero.
-
- @param length
- The length of the byte string. Must be non-negative.
-
- @param encoding
- The text encoding to convert from. Must be an octet encoding (i.e.,
- rtl_isOctetTextEncoding(encoding) must return true).
-
- @param flags
- A combination of RTL_TEXTTOUNICODE_FLAGS that detail how to do the
- conversion (see rtl_convertTextToUnicode). RTL_TEXTTOUNICODE_FLAGS_FLUSH
- need not be included, it is implicitly assumed. Typical uses are either
- RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR |
- RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR |
- RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR (fail if a byte or multi-byte sequence
- cannot be converted from the source encoding) or
- OSTRING_TO_OUSTRING_CVTFLAGS (make a best efforts conversion).
-
- @return
- True if the conversion succeeded, false otherwise.
-
- @since UDK 3.2.9
-*/
-SAL_DLLPUBLIC sal_Bool SAL_CALL rtl_convertStringToUString(
- rtl_uString ** target, char const * source, sal_Int32 length,
- rtl_TextEncoding encoding, sal_uInt32 flags) SAL_THROW_EXTERN_C();
-
-/** Ensure a string has enough space for a given number of characters.
-
- If the given string is large enough and has refcount of 1, it is not altered in any way.
- Otherwise it is replaced by a copy that has enough space for the given number of characters,
- data from the source string is copied to the beginning of it, the content of the remaining
- capacity undefined, the string has refcount of 1, and refcount of the original string is decreased.
-
- @param str
- pointer to the string. The pointed-to data must be a valid string.
-
- @param size
- the number of characters
-
- @since LibreOffice 4.1
- @internal
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_uString_ensureCapacity( rtl_uString ** str, sal_Int32 size ) SAL_THROW_EXTERN_C();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTL_USTRING_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/ustring.hxx b/sal/inc/rtl/ustring.hxx
deleted file mode 100644
index 13756f868198..000000000000
--- a/sal/inc/rtl/ustring.hxx
+++ /dev/null
@@ -1,2416 +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 _RTL_USTRING_HXX_
-#define _RTL_USTRING_HXX_
-
-#include "sal/config.h"
-
-#include <cassert>
-#include <ostream>
-#include <string.h>
-
-#include "osl/diagnose.h"
-#include <rtl/ustring.h>
-#include <rtl/string.hxx>
-#include <rtl/stringutils.hxx>
-#include <rtl/textenc.h>
-#include "sal/log.hxx"
-
-#ifdef RTL_FAST_STRING
-#include <rtl/stringconcat.hxx>
-#endif
-
-#if defined EXCEPTIONS_OFF
-#include <stdlib.h>
-#else
-#include <new>
-#endif
-
-// The unittest uses slightly different code to help check that the proper
-// calls are made. The class is put into a different namespace to make
-// sure the compiler generates a different (if generating also non-inline)
-// copy of the function and does not merge them together. The class
-// is "brought" into the proper rtl namespace by a typedef below.
-#ifdef RTL_STRING_UNITTEST
-#define rtl rtlunittest
-#endif
-
-namespace rtl
-{
-
-#ifdef RTL_STRING_UNITTEST
-#undef rtl
-#endif
-
-/* ======================================================================= */
-
-/**
- This String class provides base functionality for C++ like Unicode
- character array handling. The advantage of this class is that it
- handles all the memory management for you - and it does it
- more efficiently. If you assign a string to another string, the
- data of both strings are shared (without any copy operation or
- memory allocation) as long as you do not change the string. This class
- also stores the length of the string, so that many operations are
- faster than the C-str-functions.
-
- This class provides only readonly string handling. So you could create
- a string and you could only query the content from this string.
- It provides also functionality to change the string, but this results
- in every case in a new string instance (in the most cases with a
- memory allocation). You don't have functionality to change the
- content of the string. If you want to change the string content, then
- you should use the OStringBuffer class, which provides these
- functionalities and avoids too much memory allocation.
-
- The design of this class is similar to the string classes in Java so
- less people should have understanding problems when they use this class.
-*/
-
-class SAL_WARN_UNUSED OUString
-{
-public:
- /// @cond INTERNAL
- rtl_uString * pData;
- /// @endcond
-
-private:
- class DO_NOT_ACQUIRE{};
-
- OUString( rtl_uString * value, SAL_UNUSED_PARAMETER DO_NOT_ACQUIRE * )
- {
- pData = value;
- }
-
-public:
- /**
- New string containing no characters.
- */
- OUString() SAL_THROW(())
- {
- pData = 0;
- rtl_uString_new( &pData );
- }
-
- /**
- New string from OUString.
-
- @param str a OUString.
- */
- OUString( const OUString & str ) SAL_THROW(())
- {
- pData = str.pData;
- rtl_uString_acquire( pData );
- }
-
- /**
- New string from OUString data.
-
- @param str a OUString data.
- */
- OUString( rtl_uString * str ) SAL_THROW(())
- {
- pData = str;
- rtl_uString_acquire( pData );
- }
-
- /** New OUString from OUString data without acquiring it. Takeover of ownership.
-
- The SAL_NO_ACQUIRE dummy parameter is only there to distinguish this
- from other constructors.
-
- @param str
- OUString data
- */
- inline OUString( rtl_uString * str, __sal_NoAcquire ) SAL_THROW(())
- { pData = str; }
-
- /**
- New string from a single Unicode character.
-
- @param value a Unicode character.
- */
- explicit OUString( sal_Unicode value ) SAL_THROW(())
- : pData (0)
- {
- rtl_uString_newFromStr_WithLength( &pData, &value, 1 );
- }
-
- /**
- New string from a Unicode character buffer array.
-
- @param value a NULL-terminated Unicode character array.
- */
- OUString( const sal_Unicode * value ) SAL_THROW(())
- {
- pData = 0;
- rtl_uString_newFromStr( &pData, value );
- }
-
- /**
- New string from a Unicode character buffer array.
-
- @param value a Unicode character array.
- @param length the number of character which should be copied.
- The character array length must be greater than
- or equal to this value.
- */
- OUString( const sal_Unicode * value, sal_Int32 length ) SAL_THROW(())
- {
- pData = 0;
- rtl_uString_newFromStr_WithLength( &pData, value, length );
- }
-
- /**
- New string from an 8-Bit string literal that is expected to contain only
- characters in the ASCII set (i.e. first 128 characters). This constructor
- allows an efficient and convenient way to create OUString
- instances from ASCII literals. When creating strings from data that
- is not pure ASCII, it needs to be converted to OUString by explicitly
- providing the encoding to use for the conversion.
-
- If there are any embedded \0's in the string literal, the result is undefined.
- Use the overload that explicitly accepts length.
-
- @param literal the 8-bit ASCII string literal
-
- @since LibreOffice 3.6
- */
- template< typename T >
- OUString( T& literal, typename internal::ConstCharArrayDetector< T, internal::Dummy >::Type = internal::Dummy() )
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- pData = 0;
- if( internal::ConstCharArrayDetector< T, void >::size - 1 == 0 ) // empty string
- rtl_uString_new( &pData );
- else
- rtl_uString_newFromLiteral( &pData, literal, internal::ConstCharArrayDetector< T, void >::size - 1, 0 );
-#ifdef RTL_STRING_UNITTEST
- rtl_string_unittest_const_literal = true;
-#endif
- }
-
-#ifdef RTL_STRING_UNITTEST
- /**
- * Only used by unittests to detect incorrect conversions.
- * @internal
- */
- template< typename T >
- OUString( T&, typename internal::ExceptConstCharArrayDetector< T >::Type = internal::Dummy() )
- {
- pData = 0;
- rtl_uString_newFromLiteral( &pData, "!!br0ken!!", 10, 0 ); // set to garbage
- rtl_string_unittest_invalid_conversion = true;
- }
- /**
- * Only used by unittests to detect incorrect conversions.
- * @internal
- */
- template< typename T >
- OUString( const T&, typename internal::ExceptCharArrayDetector< T >::Type = internal::Dummy() )
- {
- pData = 0;
- rtl_uString_newFromLiteral( &pData, "!!br0ken!!", 10, 0 ); // set to garbage
- rtl_string_unittest_invalid_conversion = true;
- }
-#endif
-
- /**
- New string from an 8-Bit character buffer array.
-
- @param value An 8-Bit character array.
- @param length The number of character which should be converted.
- The 8-Bit character array length must be
- greater than or equal to this value.
- @param encoding The text encoding from which the 8-Bit character
- sequence should be converted.
- @param convertFlags Flags which control the conversion.
- see RTL_TEXTTOUNICODE_FLAGS_...
-
- @exception std::bad_alloc is thrown if an out-of-memory condition occurs
- */
- OUString( const sal_Char * value, sal_Int32 length,
- rtl_TextEncoding encoding,
- sal_uInt32 convertFlags = OSTRING_TO_OUSTRING_CVTFLAGS )
- {
- pData = 0;
- rtl_string2UString( &pData, value, length, encoding, convertFlags );
- if (pData == 0) {
-#if defined EXCEPTIONS_OFF
- abort();
-#else
- throw std::bad_alloc();
-#endif
- }
- }
-
- /** Create a new string from an array of Unicode code points.
-
- @param codePoints
- an array of at least codePointCount code points, which each must be in
- the range from 0 to 0x10FFFF, inclusive. May be null if codePointCount
- is zero.
-
- @param codePointCount
- the non-negative number of code points.
-
- @exception std::bad_alloc
- is thrown if either an out-of-memory condition occurs or the resulting
- number of UTF-16 code units would have been larger than SAL_MAX_INT32.
-
- @since UDK 3.2.7
- */
- inline explicit OUString(
- sal_uInt32 const * codePoints, sal_Int32 codePointCount):
- pData(NULL)
- {
- rtl_uString_newFromCodePoints(&pData, codePoints, codePointCount);
- if (pData == NULL) {
-#if defined EXCEPTIONS_OFF
- abort();
-#else
- throw std::bad_alloc();
-#endif
- }
- }
-
-#ifdef RTL_FAST_STRING
- /**
- @overload
- @internal
- */
- template< typename T1, typename T2 >
- OUString( const OUStringConcat< T1, T2 >& c )
- {
- const sal_Int32 l = c.length();
- pData = rtl_uString_alloc( l );
- if (l != 0)
- {
- sal_Unicode* end = c.addData( pData->buffer );
- pData->length = end - pData->buffer;
- *end = '\0';
- // TODO realloc in case pData->length is noticeably smaller than l?
- }
- }
-#endif
-
- /**
- Release the string data.
- */
- ~OUString() SAL_THROW(())
- {
- rtl_uString_release( pData );
- }
-
- /** Provides an OUString const & passing a storage pointer of an
- rtl_uString * handle.
- It is more convenient to use C++ OUString member functions when dealing
- with rtl_uString * handles. Using this function avoids unnecessary
- acquire()/release() calls for a temporary OUString object.
-
- @param ppHandle
- pointer to storage
- @return
- OUString const & based on given storage
- */
- static inline OUString const & unacquired( rtl_uString * const * ppHandle )
- { return * reinterpret_cast< OUString const * >( ppHandle ); }
-
- /**
- Assign a new string.
-
- @param str a OUString.
- */
- OUString & operator=( const OUString & str ) SAL_THROW(())
- {
- rtl_uString_assign( &pData, str.pData );
- return *this;
- }
-
- /**
- Assign a new string from an 8-Bit string literal that is expected to contain only
- characters in the ASCII set (i.e. first 128 characters). This operator
- allows an efficient and convenient way to assign OUString
- instances from ASCII literals. When assigning strings from data that
- is not pure ASCII, it needs to be converted to OUString by explicitly
- providing the encoding to use for the conversion.
-
- @param literal the 8-bit ASCII string literal
-
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, OUString& >::Type operator=( T& literal )
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- if( internal::ConstCharArrayDetector< T, void >::size - 1 == 0 ) // empty string
- rtl_uString_new( &pData );
- else
- rtl_uString_newFromLiteral( &pData, literal, internal::ConstCharArrayDetector< T, void >::size - 1, 0 );
- return *this;
- }
-
- /**
- Append a string to this string.
-
- @param str a OUString.
- */
- OUString & operator+=( const OUString & str ) SAL_THROW(())
- {
- rtl_uString_newConcat( &pData, pData, str.pData );
- return *this;
- }
-
-#ifdef RTL_FAST_STRING
- /**
- @overload
- @internal
- */
- template< typename T1, typename T2 >
- OUString& operator+=( const OUStringConcat< T1, T2 >& c )
- {
- const int l = c.length();
- if( l == 0 )
- return *this;
- rtl_uString_ensureCapacity( &pData, pData->length + l );
- sal_Unicode* end = c.addData( pData->buffer + pData->length );
- *end = '\0';
- pData->length = end - pData->buffer;
- return *this;
- }
-#endif
-
- /**
- Returns the length of this string.
-
- The length is equal to the number of Unicode characters in this string.
-
- @return the length of the sequence of characters represented by this
- object.
- */
- sal_Int32 getLength() const SAL_THROW(()) { return pData->length; }
-
- /**
- Checks if a string is empty.
-
- @return true if the string is empty;
- false, otherwise.
-
- @since LibreOffice 3.4
- */
- bool isEmpty() const SAL_THROW(())
- {
- return pData->length == 0;
- }
-
- /**
- Returns a pointer to the Unicode character buffer for this string.
-
- It isn't necessarily NULL terminated.
-
- @return a pointer to the Unicode characters buffer for this object.
- */
- const sal_Unicode * getStr() const SAL_THROW(()) { return pData->buffer; }
-
- /**
- Access to individual characters.
-
- @param index must be non-negative and less than length.
-
- @return the character at the given index.
-
- @since LibreOffice 3.5
- */
- sal_Unicode operator [](sal_Int32 index) const {
- assert(index >= 0 && index <= getLength());
- //TODO: should really check for < getLength(), but there is quite
- // some clever code out there that violates this function's
- // documented precondition and relies on s[s.getLength()] == 0 and
- // that would need to be fixed first
- return getStr()[index];
- }
-
- /**
- Compares two strings.
-
- The comparison is based on the numeric value of each character in
- the strings and return a value indicating their relationship.
- This function can't be used for language specific sorting.
-
- @param str the object to be compared.
- @return 0 - if both strings are equal
- < 0 - if this string is less than the string argument
- > 0 - if this string is greater than the string argument
- */
- sal_Int32 compareTo( const OUString & str ) const SAL_THROW(())
- {
- return rtl_ustr_compare_WithLength( pData->buffer, pData->length,
- str.pData->buffer, str.pData->length );
- }
-
- /**
- Compares two strings with a maximum count of characters.
-
- The comparison is based on the numeric value of each character in
- the strings and return a value indicating their relationship.
- This function can't be used for language specific sorting.
-
- @param str the object to be compared.
- @param maxLength the maximum count of characters to be compared.
- @return 0 - if both strings are equal
- < 0 - if this string is less than the string argument
- > 0 - if this string is greater than the string argument
-
- @since UDK 3.2.7
- */
- sal_Int32 compareTo( const OUString & str, sal_Int32 maxLength ) const SAL_THROW(())
- {
- return rtl_ustr_shortenedCompare_WithLength( pData->buffer, pData->length,
- str.pData->buffer, str.pData->length, maxLength );
- }
-
- /**
- Compares two strings in reverse order.
-
- The comparison is based on the numeric value of each character in
- the strings and return a value indicating their relationship.
- This function can't be used for language specific sorting.
-
- @param str the object to be compared.
- @return 0 - if both strings are equal
- < 0 - if this string is less than the string argument
- > 0 - if this string is greater than the string argument
- */
- sal_Int32 reverseCompareTo( const OUString & str ) const SAL_THROW(())
- {
- return rtl_ustr_reverseCompare_WithLength( pData->buffer, pData->length,
- str.pData->buffer, str.pData->length );
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 4.1
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, sal_Int32 >::Type reverseCompareTo( T& literal ) const SAL_THROW(())
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return rtl_ustr_asciil_reverseCompare_WithLength( pData->buffer, pData->length,
- literal, internal::ConstCharArrayDetector< T, void >::size - 1 );
- }
-
- /**
- Perform a comparison of two strings.
-
- The result is true if and only if second string
- represents the same sequence of characters as the first string.
- This function can't be used for language specific comparison.
-
- @param str the object to be compared.
- @return sal_True if the strings are equal;
- sal_False, otherwise.
- */
- sal_Bool equals( const OUString & str ) const SAL_THROW(())
- {
- if ( pData->length != str.pData->length )
- return sal_False;
- if ( pData == str.pData )
- return sal_True;
- return rtl_ustr_reverseCompare_WithLength( pData->buffer, pData->length,
- str.pData->buffer, str.pData->length ) == 0;
- }
-
- /**
- Perform a ASCII lowercase comparison of two strings.
-
- The result is true if and only if second string
- represents the same sequence of characters as the first string,
- ignoring the case.
- Character values between 65 and 90 (ASCII A-Z) are interpreted as
- values between 97 and 122 (ASCII a-z).
- This function can't be used for language specific comparison.
-
- @param str the object to be compared.
- @return sal_True if the strings are equal;
- sal_False, otherwise.
- */
- sal_Bool equalsIgnoreAsciiCase( const OUString & str ) const SAL_THROW(())
- {
- if ( pData->length != str.pData->length )
- return sal_False;
- if ( pData == str.pData )
- return sal_True;
- return rtl_ustr_compareIgnoreAsciiCase_WithLength( pData->buffer, pData->length,
- str.pData->buffer, str.pData->length ) == 0;
- }
-
- /**
- Perform a ASCII lowercase comparison of two strings.
-
- Compare the two strings with uppercase ASCII
- character values between 65 and 90 (ASCII A-Z) interpreted as
- values between 97 and 122 (ASCII a-z).
- This function can't be used for language specific comparison.
-
- @param str the object to be compared.
- @return 0 - if both strings are equal
- < 0 - if this string is less than the string argument
- > 0 - if this string is greater than the string argument
-
- @since LibreOffice 4.0
- */
- sal_Int32 compareToIgnoreAsciiCase( const OUString & str ) const SAL_THROW(())
- {
- return rtl_ustr_compareIgnoreAsciiCase_WithLength( pData->buffer, pData->length,
- str.pData->buffer, str.pData->length );
- }
-
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, bool >::Type equalsIgnoreAsciiCase( T& literal ) const SAL_THROW(())
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- if ( pData->length != internal::ConstCharArrayDetector< T, void >::size - 1 )
- return sal_False;
-
- return rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( pData->buffer, pData->length, literal ) == 0;
- }
-
- /**
- Match against a substring appearing in this string.
-
- The result is true if and only if the second string appears as a substring
- of this string, at the given position.
- This function can't be used for language specific comparison.
-
- @param str the object (substring) to be compared.
- @param fromIndex the index to start the comparion from.
- The index must be greater than or equal to 0
- and less or equal as the string length.
- @return sal_True if str match with the characters in the string
- at the given position;
- sal_False, otherwise.
- */
- sal_Bool match( const OUString & str, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- return rtl_ustr_shortenedCompare_WithLength( pData->buffer+fromIndex, pData->length-fromIndex,
- str.pData->buffer, str.pData->length, str.pData->length ) == 0;
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, bool >::Type match( T& literal, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return rtl_ustr_ascii_shortenedCompare_WithLength( pData->buffer+fromIndex, pData->length-fromIndex,
- literal, internal::ConstCharArrayDetector< T, void >::size - 1 ) == 0;
- }
-
- /**
- Match against a substring appearing in this string, ignoring the case of
- ASCII letters.
-
- The result is true if and only if the second string appears as a substring
- of this string, at the given position.
- Character values between 65 and 90 (ASCII A-Z) are interpreted as
- values between 97 and 122 (ASCII a-z).
- This function can't be used for language specific comparison.
-
- @param str the object (substring) to be compared.
- @param fromIndex the index to start the comparion from.
- The index must be greater than or equal to 0
- and less than or equal to the string length.
- @return sal_True if str match with the characters in the string
- at the given position;
- sal_False, otherwise.
- */
- sal_Bool matchIgnoreAsciiCase( const OUString & str, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- return rtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength( pData->buffer+fromIndex, pData->length-fromIndex,
- str.pData->buffer, str.pData->length,
- str.pData->length ) == 0;
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, bool >::Type matchIgnoreAsciiCase( T& literal, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( pData->buffer+fromIndex, pData->length-fromIndex,
- literal, internal::ConstCharArrayDetector< T, void >::size - 1 ) == 0;
- }
-
- /**
- Compares two strings.
-
- The comparison is based on the numeric value of each character in
- the strings and return a value indicating their relationship.
- Since this method is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range between 0 and
- 127. The ASCII string must be NULL-terminated.
- This function can't be used for language specific sorting.
-
- @param asciiStr the 8-Bit ASCII character string to be compared.
- @return 0 - if both strings are equal
- < 0 - if this string is less than the string argument
- > 0 - if this string is greater than the string argument
- */
- sal_Int32 compareToAscii( const sal_Char* asciiStr ) const SAL_THROW(())
- {
- return rtl_ustr_ascii_compare_WithLength( pData->buffer, pData->length, asciiStr );
- }
-
- /**
- Compares two strings with a maximum count of characters.
-
- The comparison is based on the numeric value of each character in
- the strings and return a value indicating their relationship.
- Since this method is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range between 0 and
- 127. The ASCII string must be NULL-terminated.
- This function can't be used for language specific sorting.
-
- @deprecated This is a confusing overload with unexpectedly different
- semantics from the one-parameter form, so it is marked as deprecated.
- Practically all uses compare the return value against zero and can thus
- be replaced with uses of startsWith.
-
- @param asciiStr the 8-Bit ASCII character string to be compared.
- @param maxLength the maximum count of characters to be compared.
- @return 0 - if both strings are equal
- < 0 - if this string is less than the string argument
- > 0 - if this string is greater than the string argument
- */
- SAL_DEPRECATED(
- "replace s1.compareToAscii(s2, strlen(s2)) == 0 with s1.startsWith(s2)")
- sal_Int32 compareToAscii( const sal_Char * asciiStr, sal_Int32 maxLength ) const SAL_THROW(())
- {
- return rtl_ustr_ascii_shortenedCompare_WithLength( pData->buffer, pData->length,
- asciiStr, maxLength );
- }
-
- /**
- Compares two strings in reverse order.
-
- This could be useful, if normally both strings start with the same
- content. The comparison is based on the numeric value of each character
- in the strings and return a value indicating their relationship.
- Since this method is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range between 0 and 127.
- The ASCII string must be NULL-terminated and must be greater than
- or equal to asciiStrLength.
- This function can't be used for language specific sorting.
-
- @param asciiStr the 8-Bit ASCII character string to be compared.
- @param asciiStrLength the length of the ascii string
- @return 0 - if both strings are equal
- < 0 - if this string is less than the string argument
- > 0 - if this string is greater than the string argument
- */
- sal_Int32 reverseCompareToAsciiL( const sal_Char * asciiStr, sal_Int32 asciiStrLength ) const SAL_THROW(())
- {
- return rtl_ustr_asciil_reverseCompare_WithLength( pData->buffer, pData->length,
- asciiStr, asciiStrLength );
- }
-
- /**
- Perform a comparison of two strings.
-
- The result is true if and only if second string
- represents the same sequence of characters as the first string.
- Since this method is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range between 0 and
- 127. The ASCII string must be NULL-terminated.
- This function can't be used for language specific comparison.
-
- @param asciiStr the 8-Bit ASCII character string to be compared.
- @return sal_True if the strings are equal;
- sal_False, otherwise.
- */
- sal_Bool equalsAscii( const sal_Char* asciiStr ) const SAL_THROW(())
- {
- return rtl_ustr_ascii_compare_WithLength( pData->buffer, pData->length,
- asciiStr ) == 0;
- }
-
- /**
- Perform a comparison of two strings.
-
- The result is true if and only if second string
- represents the same sequence of characters as the first string.
- Since this method is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range between 0 and
- 127. The ASCII string must be NULL-terminated and must be greater than
- or equal to asciiStrLength.
- This function can't be used for language specific comparison.
-
- @param asciiStr the 8-Bit ASCII character string to be compared.
- @param asciiStrLength the length of the ascii string
- @return sal_True if the strings are equal;
- sal_False, otherwise.
- */
- sal_Bool equalsAsciiL( const sal_Char* asciiStr, sal_Int32 asciiStrLength ) const SAL_THROW(())
- {
- if ( pData->length != asciiStrLength )
- return sal_False;
-
- return rtl_ustr_asciil_reverseEquals_WithLength(
- pData->buffer, asciiStr, asciiStrLength );
- }
-
- /**
- Perform a ASCII lowercase comparison of two strings.
-
- The result is true if and only if second string
- represents the same sequence of characters as the first string,
- ignoring the case.
- Character values between 65 and 90 (ASCII A-Z) are interpreted as
- values between 97 and 122 (ASCII a-z).
- Since this method is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range between 0 and
- 127. The ASCII string must be NULL-terminated.
- This function can't be used for language specific comparison.
-
- @param asciiStr the 8-Bit ASCII character string to be compared.
- @return sal_True if the strings are equal;
- sal_False, otherwise.
- */
- sal_Bool equalsIgnoreAsciiCaseAscii( const sal_Char * asciiStr ) const SAL_THROW(())
- {
- return rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( pData->buffer, pData->length, asciiStr ) == 0;
- }
-
- /**
- Compares two ASCII strings ignoring case
-
- The comparison is based on the numeric value of each character in
- the strings and return a value indicating their relationship.
- Since this method is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range between 0 and
- 127. The ASCII string must be NULL-terminated.
- This function can't be used for language specific sorting.
-
- @param asciiStr the 8-Bit ASCII character string to be compared.
- @return 0 - if both strings are equal
- < 0 - if this string is less than the string argument
- > 0 - if this string is greater than the string argument
-
- @since LibreOffice 3.5
- */
- sal_Int32 compareToIgnoreAsciiCaseAscii( const sal_Char * asciiStr ) const SAL_THROW(())
- {
- return rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( pData->buffer, pData->length, asciiStr );
- }
-
- /**
- Perform an ASCII lowercase comparison of two strings.
-
- The result is true if and only if second string
- represents the same sequence of characters as the first string,
- ignoring the case.
- Character values between 65 and 90 (ASCII A-Z) are interpreted as
- values between 97 and 122 (ASCII a-z).
- Since this method is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range between 0 and 127.
- The ASCII string must be NULL-terminated and must be greater than
- or equal to asciiStrLength.
- This function can't be used for language specific comparison.
-
- @param asciiStr the 8-Bit ASCII character string to be compared.
- @param asciiStrLength the length of the ascii string
- @return sal_True if the strings are equal;
- sal_False, otherwise.
- */
- sal_Bool equalsIgnoreAsciiCaseAsciiL( const sal_Char * asciiStr, sal_Int32 asciiStrLength ) const SAL_THROW(())
- {
- if ( pData->length != asciiStrLength )
- return sal_False;
-
- return rtl_ustr_ascii_compareIgnoreAsciiCase_WithLength( pData->buffer, pData->length, asciiStr ) == 0;
- }
-
- /**
- Match against a substring appearing in this string.
-
- The result is true if and only if the second string appears as a substring
- of this string, at the given position.
- Since this method is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range between 0 and
- 127. The ASCII string must be NULL-terminated and must be greater than or
- equal to asciiStrLength.
- This function can't be used for language specific comparison.
-
- @param asciiStr the object (substring) to be compared.
- @param asciiStrLength the length of asciiStr.
- @param fromIndex the index to start the comparion from.
- The index must be greater than or equal to 0
- and less than or equal to the string length.
- @return sal_True if str match with the characters in the string
- at the given position;
- sal_False, otherwise.
- */
- sal_Bool matchAsciiL( const sal_Char* asciiStr, sal_Int32 asciiStrLength, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- return rtl_ustr_ascii_shortenedCompare_WithLength( pData->buffer+fromIndex, pData->length-fromIndex,
- asciiStr, asciiStrLength ) == 0;
- }
-
- // This overload is left undefined, to detect calls of matchAsciiL that
- // erroneously use RTL_CONSTASCII_USTRINGPARAM instead of
- // RTL_CONSTASCII_STRINGPARAM (but would lead to ambiguities on 32 bit
- // platforms):
-#if SAL_TYPES_SIZEOFLONG == 8
- void matchAsciiL(char const *, sal_Int32, rtl_TextEncoding) const;
-#endif
-
- /**
- Match against a substring appearing in this string, ignoring the case of
- ASCII letters.
-
- The result is true if and only if the second string appears as a substring
- of this string, at the given position.
- Character values between 65 and 90 (ASCII A-Z) are interpreted as
- values between 97 and 122 (ASCII a-z).
- Since this method is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range between 0 and
- 127. The ASCII string must be NULL-terminated and must be greater than or
- equal to asciiStrLength.
- This function can't be used for language specific comparison.
-
- @param asciiStr the 8-Bit ASCII character string to be compared.
- @param asciiStrLength the length of the ascii string
- @param fromIndex the index to start the comparion from.
- The index must be greater than or equal to 0
- and less than or equal to the string length.
- @return sal_True if str match with the characters in the string
- at the given position;
- sal_False, otherwise.
- */
- sal_Bool matchIgnoreAsciiCaseAsciiL( const sal_Char* asciiStr, sal_Int32 asciiStrLength, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- return rtl_ustr_ascii_shortenedCompareIgnoreAsciiCase_WithLength( pData->buffer+fromIndex, pData->length-fromIndex,
- asciiStr, asciiStrLength ) == 0;
- }
-
- // This overload is left undefined, to detect calls of
- // matchIgnoreAsciiCaseAsciiL that erroneously use
- // RTL_CONSTASCII_USTRINGPARAM instead of RTL_CONSTASCII_STRINGPARAM (but
- // would lead to ambiguities on 32 bit platforms):
-#if SAL_TYPES_SIZEOFLONG == 8
- void matchIgnoreAsciiCaseAsciiL(char const *, sal_Int32, rtl_TextEncoding)
- const;
-#endif
-
- /**
- Check whether this string starts with a given substring.
-
- @param str the substring to be compared
-
- @return true if and only if the given str appears as a substring at the
- start of this string
-
- @since LibreOffice 4.0
- */
- bool startsWith(OUString const & str) const {
- return match(str, 0);
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 4.0
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, bool >::Type startsWith( T& literal ) const
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return internal::ConstCharArrayDetector< T, void >::size - 1 <= pData->length
- && rtl_ustr_asciil_reverseEquals_WithLength( pData->buffer, literal,
- internal::ConstCharArrayDetector< T, void >::size - 1);
- }
-
- /**
- Check whether this string starts with a given string, ignoring the case of
- ASCII letters.
-
- Character values between 65 and 90 (ASCII A-Z) are interpreted as
- values between 97 and 122 (ASCII a-z).
- This function can't be used for language specific comparison.
-
- @param str the object (substring) to be compared.
- @return true if this string starts with str, ignoring the case of ASCII
- letters ("A"--"Z" and "a"--"z"); otherwise, false is returned
- @since LibreOffice 4.0
- */
- sal_Bool startsWithIgnoreAsciiCase( const OUString & str ) const SAL_THROW(())
- {
- return matchIgnoreAsciiCase(str, 0);
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 4.0
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, bool >::Type startsWithIgnoreAsciiCase( T& literal ) const SAL_THROW(())
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return (rtl_ustr_ascii_compareIgnoreAsciiCase_WithLengths(
- pData->buffer,
- internal::ConstCharArrayDetector< T, void >::size - 1, literal,
- internal::ConstCharArrayDetector< T, void >::size - 1)
- == 0);
- }
-
- /**
- Check whether this string ends with a given substring.
-
- @param str the substring to be compared
-
- @return true if and only if the given str appears as a substring at the
- end of this string
-
- @since LibreOffice 3.6
- */
- bool endsWith(OUString const & str) const {
- return str.getLength() <= getLength()
- && match(str, getLength() - str.getLength());
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, bool >::Type endsWith( T& literal ) const
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return internal::ConstCharArrayDetector< T, void >::size - 1 <= pData->length
- && rtl_ustr_asciil_reverseEquals_WithLength(
- pData->buffer + pData->length - ( internal::ConstCharArrayDetector< T, void >::size - 1 ), literal,
- internal::ConstCharArrayDetector< T, void >::size - 1);
- }
-
- /**
- Check whether this string ends with a given ASCII string.
-
- @param asciiStr a sequence of at least asciiStrLength ASCII characters
- (bytes in the range 0x00--0x7F)
- @param asciiStrLength the length of asciiStr; must be non-negative
- @return true if this string ends with asciiStr; otherwise, false is
- returned
-
- @since UDK 3.2.7
- */
- inline bool endsWithAsciiL(char const * asciiStr, sal_Int32 asciiStrLength)
- const
- {
- return asciiStrLength <= pData->length
- && rtl_ustr_asciil_reverseEquals_WithLength(
- pData->buffer + pData->length - asciiStrLength, asciiStr,
- asciiStrLength);
- }
-
- /**
- Check whether this string ends with a given string, ignoring the case of
- ASCII letters.
-
- Character values between 65 and 90 (ASCII A-Z) are interpreted as
- values between 97 and 122 (ASCII a-z).
- This function can't be used for language specific comparison.
-
- @param str the object (substring) to be compared.
- @return true if this string ends with str, ignoring the case of ASCII
- letters ("A"--"Z" and "a"--"z"); otherwise, false is returned
- @since LibreOffice 3.6
- */
- sal_Bool endsWithIgnoreAsciiCase( const OUString & str ) const SAL_THROW(())
- {
- return str.getLength() <= getLength()
- && matchIgnoreAsciiCase(str, getLength() - str.getLength());
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, bool >::Type endsWithIgnoreAsciiCase( T& literal ) const SAL_THROW(())
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return internal::ConstCharArrayDetector< T, void >::size - 1 <= pData->length
- && (rtl_ustr_ascii_compareIgnoreAsciiCase_WithLengths(
- pData->buffer + pData->length - ( internal::ConstCharArrayDetector< T, void >::size - 1 ),
- internal::ConstCharArrayDetector< T, void >::size - 1, literal,
- internal::ConstCharArrayDetector< T, void >::size - 1)
- == 0);
- }
-
- /**
- Check whether this string ends with a given ASCII string, ignoring the
- case of ASCII letters.
-
- @param asciiStr a sequence of at least asciiStrLength ASCII characters
- (bytes in the range 0x00--0x7F)
- @param asciiStrLength the length of asciiStr; must be non-negative
- @return true if this string ends with asciiStr, ignoring the case of ASCII
- letters ("A"--"Z" and "a"--"z"); otherwise, false is returned
- */
- inline bool endsWithIgnoreAsciiCaseAsciiL(
- char const * asciiStr, sal_Int32 asciiStrLength) const
- {
- return asciiStrLength <= pData->length
- && (rtl_ustr_ascii_compareIgnoreAsciiCase_WithLengths(
- pData->buffer + pData->length - asciiStrLength,
- asciiStrLength, asciiStr, asciiStrLength)
- == 0);
- }
-
- friend sal_Bool operator == ( const OUString& rStr1, const OUString& rStr2 ) SAL_THROW(())
- { return rStr1.equals(rStr2); }
- friend sal_Bool operator == ( const OUString& rStr1, const sal_Unicode * pStr2 ) SAL_THROW(())
- { return rStr1.compareTo( pStr2 ) == 0; }
- friend sal_Bool operator == ( const sal_Unicode * pStr1, const OUString& rStr2 ) SAL_THROW(())
- { return OUString( pStr1 ).compareTo( rStr2 ) == 0; }
-
- friend sal_Bool operator != ( const OUString& rStr1, const OUString& rStr2 ) SAL_THROW(())
- { return !(operator == ( rStr1, rStr2 )); }
- friend sal_Bool operator != ( const OUString& rStr1, const sal_Unicode * pStr2 ) SAL_THROW(())
- { return !(operator == ( rStr1, pStr2 )); }
- friend sal_Bool operator != ( const sal_Unicode * pStr1, const OUString& rStr2 ) SAL_THROW(())
- { return !(operator == ( pStr1, rStr2 )); }
-
- friend sal_Bool operator < ( const OUString& rStr1, const OUString& rStr2 ) SAL_THROW(())
- { return rStr1.compareTo( rStr2 ) < 0; }
- friend sal_Bool operator > ( const OUString& rStr1, const OUString& rStr2 ) SAL_THROW(())
- { return rStr1.compareTo( rStr2 ) > 0; }
- friend sal_Bool operator <= ( const OUString& rStr1, const OUString& rStr2 ) SAL_THROW(())
- { return rStr1.compareTo( rStr2 ) <= 0; }
- friend sal_Bool operator >= ( const OUString& rStr1, const OUString& rStr2 ) SAL_THROW(())
- { return rStr1.compareTo( rStr2 ) >= 0; }
-
- /**
- * Compare string to an ASCII string literal.
- *
- * This operator is equal to calling equalsAsciiL().
- *
- * @since LibreOffice 3.6
- */
- template< typename T >
- friend inline typename internal::ConstCharArrayDetector< T, bool >::Type operator==( const OUString& string, T& literal )
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return string.equalsAsciiL( literal, internal::ConstCharArrayDetector< T, void >::size - 1 );
- }
- /**
- * Compare string to an ASCII string literal.
- *
- * This operator is equal to calling equalsAsciiL().
- *
- * @since LibreOffice 3.6
- */
- template< typename T >
- friend inline typename internal::ConstCharArrayDetector< T, bool >::Type operator==( T& literal, const OUString& string )
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return string.equalsAsciiL( literal, internal::ConstCharArrayDetector< T, void >::size - 1 );
- }
- /**
- * Compare string to an ASCII string literal.
- *
- * This operator is equal to calling !equalsAsciiL().
- *
- * @since LibreOffice 3.6
- */
- template< typename T >
- friend inline typename internal::ConstCharArrayDetector< T, bool >::Type operator!=( const OUString& string, T& literal )
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return !string.equalsAsciiL( literal, internal::ConstCharArrayDetector< T, void >::size - 1 );
- }
- /**
- * Compare string to an ASCII string literal.
- *
- * This operator is equal to calling !equalsAsciiL().
- *
- * @since LibreOffice 3.6
- */
- template< typename T >
- friend inline typename internal::ConstCharArrayDetector< T, bool >::Type operator!=( T& literal, const OUString& string )
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return !string.equalsAsciiL( literal, internal::ConstCharArrayDetector< T, void >::size - 1 );
- }
-
- /**
- Returns a hashcode for this string.
-
- @return a hash code value for this object.
-
- @see rtl::OUStringHash for convenient use of boost::unordered_map
- */
- sal_Int32 hashCode() const SAL_THROW(())
- {
- return rtl_ustr_hashCode_WithLength( pData->buffer, pData->length );
- }
-
- /**
- Returns the index within this string of the first occurrence of the
- specified character, starting the search at the specified index.
-
- @param ch character to be located.
- @param fromIndex the index to start the search from.
- The index must be greater than or equal to 0
- and less than or equal to the string length.
- @return the index of the first occurrence of the character in the
- character sequence represented by this string that is
- greater than or equal to fromIndex, or
- -1 if the character does not occur.
- */
- sal_Int32 indexOf( sal_Unicode ch, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- sal_Int32 ret = rtl_ustr_indexOfChar_WithLength( pData->buffer+fromIndex, pData->length-fromIndex, ch );
- return (ret < 0 ? ret : ret+fromIndex);
- }
-
- /**
- Returns the index within this string of the last occurrence of the
- specified character, searching backward starting at the end.
-
- @param ch character to be located.
- @return the index of the last occurrence of the character in the
- character sequence represented by this string, or
- -1 if the character does not occur.
- */
- sal_Int32 lastIndexOf( sal_Unicode ch ) const SAL_THROW(())
- {
- return rtl_ustr_lastIndexOfChar_WithLength( pData->buffer, pData->length, ch );
- }
-
- /**
- Returns the index within this string of the last occurrence of the
- specified character, searching backward starting before the specified
- index.
-
- @param ch character to be located.
- @param fromIndex the index before which to start the search.
- @return the index of the last occurrence of the character in the
- character sequence represented by this string that
- is less than fromIndex, or -1
- if the character does not occur before that point.
- */
- sal_Int32 lastIndexOf( sal_Unicode ch, sal_Int32 fromIndex ) const SAL_THROW(())
- {
- return rtl_ustr_lastIndexOfChar_WithLength( pData->buffer, fromIndex, ch );
- }
-
- /**
- Returns the index within this string of the first occurrence of the
- specified substring, starting at the specified index.
-
- If str doesn't include any character, always -1 is
- returned. This is also the case, if both strings are empty.
-
- @param str the substring to search for.
- @param fromIndex the index to start the search from.
- @return If the string argument occurs one or more times as a substring
- within this string at the starting index, then the index
- of the first character of the first such substring is
- returned. If it does not occur as a substring starting
- at fromIndex or beyond, -1 is returned.
- */
- sal_Int32 indexOf( const OUString & str, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- sal_Int32 ret = rtl_ustr_indexOfStr_WithLength( pData->buffer+fromIndex, pData->length-fromIndex,
- str.pData->buffer, str.pData->length );
- return (ret < 0 ? ret : ret+fromIndex);
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, sal_Int32 >::Type indexOf( T& literal, sal_Int32 fromIndex = 0 ) const SAL_THROW(())
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- sal_Int32 ret = rtl_ustr_indexOfAscii_WithLength(
- pData->buffer + fromIndex, pData->length - fromIndex, literal,
- internal::ConstCharArrayDetector< T, void >::size - 1);
- return ret < 0 ? ret : ret + fromIndex;
- }
-
- /**
- Returns the index within this string of the first occurrence of the
- specified ASCII substring, starting at the specified index.
-
- @param str
- the substring to be searched for. Need not be null-terminated, but must
- be at least as long as the specified len. Must only contain characters
- in the ASCII range 0x00--7F.
-
- @param len
- the length of the substring; must be non-negative.
-
- @param fromIndex
- the index to start the search from. Must be in the range from zero to
- the length of this string, inclusive.
-
- @return
- the index (starting at 0) of the first character of the first occurrence
- of the substring within this string starting at the given fromIndex, or
- -1 if the substring does not occur. If len is zero, -1 is returned.
-
- @since UDK 3.2.7
- */
- sal_Int32 indexOfAsciiL(
- char const * str, sal_Int32 len, sal_Int32 fromIndex = 0) const
- SAL_THROW(())
- {
- sal_Int32 ret = rtl_ustr_indexOfAscii_WithLength(
- pData->buffer + fromIndex, pData->length - fromIndex, str, len);
- return ret < 0 ? ret : ret + fromIndex;
- }
-
- // This overload is left undefined, to detect calls of indexOfAsciiL that
- // erroneously use RTL_CONSTASCII_USTRINGPARAM instead of
- // RTL_CONSTASCII_STRINGPARAM (but would lead to ambiguities on 32 bit
- // platforms):
-#if SAL_TYPES_SIZEOFLONG == 8
- void indexOfAsciiL(char const *, sal_Int32 len, rtl_TextEncoding) const;
-#endif
-
- /**
- Returns the index within this string of the last occurrence of
- the specified substring, searching backward starting at the end.
-
- The returned index indicates the starting index of the substring
- in this string.
- If str doesn't include any character, always -1 is
- returned. This is also the case, if both strings are empty.
-
- @param str the substring to search for.
- @return If the string argument occurs one or more times as a substring
- within this string, then the index of the first character of
- the last such substring is returned. If it does not occur as
- a substring, -1 is returned.
- */
- sal_Int32 lastIndexOf( const OUString & str ) const SAL_THROW(())
- {
- return rtl_ustr_lastIndexOfStr_WithLength( pData->buffer, pData->length,
- str.pData->buffer, str.pData->length );
- }
-
- /**
- Returns the index within this string of the last occurrence of
- the specified substring, searching backward starting before the specified
- index.
-
- The returned index indicates the starting index of the substring
- in this string.
- If str doesn't include any character, always -1 is
- returned. This is also the case, if both strings are empty.
-
- @param str the substring to search for.
- @param fromIndex the index before which to start the search.
- @return If the string argument occurs one or more times as a substring
- within this string before the starting index, then the index
- of the first character of the last such substring is
- returned. Otherwise, -1 is returned.
- */
- sal_Int32 lastIndexOf( const OUString & str, sal_Int32 fromIndex ) const SAL_THROW(())
- {
- return rtl_ustr_lastIndexOfStr_WithLength( pData->buffer, fromIndex,
- str.pData->buffer, str.pData->length );
- }
-
- /**
- @overload
- This function accepts an ASCII string literal as its argument.
- @since LibreOffice 3.6
- */
- template< typename T >
- typename internal::ConstCharArrayDetector< T, sal_Int32 >::Type lastIndexOf( T& literal ) const SAL_THROW(())
- {
- assert( strlen( literal ) == internal::ConstCharArrayDetector< T >::size - 1 );
- return rtl_ustr_lastIndexOfAscii_WithLength(
- pData->buffer, pData->length, literal, internal::ConstCharArrayDetector< T, void >::size - 1);
- }
-
- /**
- Returns the index within this string of the last occurrence of the
- specified ASCII substring.
-
- @param str
- the substring to be searched for. Need not be null-terminated, but must
- be at least as long as the specified len. Must only contain characters
- in the ASCII range 0x00--7F.
-
- @param len
- the length of the substring; must be non-negative.
-
- @return
- the index (starting at 0) of the first character of the last occurrence
- of the substring within this string, or -1 if the substring does not
- occur. If len is zero, -1 is returned.
-
- @since UDK 3.2.7
- */
- sal_Int32 lastIndexOfAsciiL(char const * str, sal_Int32 len) const
- SAL_THROW(())
- {
- return rtl_ustr_lastIndexOfAscii_WithLength(
- pData->buffer, pData->length, str, len);
- }
-
- /**
- Returns a new string that is a substring of this string.
-
- The substring begins at the specified beginIndex. If
- beginIndex is negative or be greater than the length of
- this string, behaviour is undefined.
-
- @param beginIndex the beginning index, inclusive.
- @return the specified substring.
- */
- SAL_WARN_UNUSED_RESULT OUString copy( sal_Int32 beginIndex ) const SAL_THROW(())
- {
- rtl_uString *pNew = 0;
- rtl_uString_newFromSubString( &pNew, pData, beginIndex, getLength() - beginIndex );
- return OUString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns a new string that is a substring of this string.
-
- The substring begins at the specified beginIndex and contains count
- characters. If either beginIndex or count are negative,
- or beginIndex + count are greater than the length of this string
- then behaviour is undefined.
-
- @param beginIndex the beginning index, inclusive.
- @param count the number of characters.
- @return the specified substring.
- */
- SAL_WARN_UNUSED_RESULT OUString copy( sal_Int32 beginIndex, sal_Int32 count ) const SAL_THROW(())
- {
- rtl_uString *pNew = 0;
- rtl_uString_newFromSubString( &pNew, pData, beginIndex, count );
- return OUString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Concatenates the specified string to the end of this string.
-
- @param str the string that is concatenated to the end
- of this string.
- @return a string that represents the concatenation of this string
- followed by the string argument.
- */
- SAL_WARN_UNUSED_RESULT OUString concat( const OUString & str ) const SAL_THROW(())
- {
- rtl_uString* pNew = 0;
- rtl_uString_newConcat( &pNew, pData, str.pData );
- return OUString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
-#ifndef RTL_FAST_STRING
- friend OUString operator+( const OUString& rStr1, const OUString& rStr2 ) SAL_THROW(())
- {
- return rStr1.concat( rStr2 );
- }
-#endif
-
- /**
- Returns a new string resulting from replacing n = count characters
- from position index in this string with newStr.
-
- @param index the replacing index in str.
- The index must be greater than or equal to 0 and
- less than or equal to the length of the string.
- @param count the count of characters that will be replaced
- The count must be greater than or equal to 0 and
- less than or equal to the length of the string minus index.
- @param newStr the new substring.
- @return the new string.
- */
- SAL_WARN_UNUSED_RESULT OUString replaceAt( sal_Int32 index, sal_Int32 count, const OUString& newStr ) const SAL_THROW(())
- {
- rtl_uString* pNew = 0;
- rtl_uString_newReplaceStrAt( &pNew, pData, index, count, newStr.pData );
- return OUString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns a new string resulting from replacing all occurrences of
- oldChar in this string with newChar.
-
- If the character oldChar does not occur in the character sequence
- represented by this object, then the string is assigned with
- str.
-
- @param oldChar the old character.
- @param newChar the new character.
- @return a string derived from this string by replacing every
- occurrence of oldChar with newChar.
- */
- SAL_WARN_UNUSED_RESULT OUString replace( sal_Unicode oldChar, sal_Unicode newChar ) const SAL_THROW(())
- {
- rtl_uString* pNew = 0;
- rtl_uString_newReplace( &pNew, pData, oldChar, newChar );
- return OUString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns a new string resulting from replacing the first occurrence of a
- given substring with another substring.
-
- @param from the substring to be replaced
-
- @param to the replacing substring
-
- @param[in,out] index pointer to a start index; if the pointer is
- non-null: upon entry to the function, its value is the index into this
- string at which to start searching for the \p from substring, the value
- must be non-negative and not greater than this string's length; upon exiting
- the function its value is the index into this string at which the
- replacement took place or -1 if no replacement took place; if the pointer
- is null, searching always starts at index 0
-
- @since LibreOffice 3.6
- */
- SAL_WARN_UNUSED_RESULT OUString replaceFirst(
- OUString const & from, OUString const & to, sal_Int32 * index = 0) const
- {
- rtl_uString * s = 0;
- sal_Int32 i = 0;
- rtl_uString_newReplaceFirst(
- &s, pData, from.pData, to.pData, index == 0 ? &i : index);
- return OUString(s, SAL_NO_ACQUIRE);
- }
-
- /**
- Returns a new string resulting from replacing the first occurrence of a
- given substring with another substring.
-
- @param from ASCII string literal, the substring to be replaced
-
- @param to the replacing substring
-
- @param[in,out] index pointer to a start index; if the pointer is
- non-null: upon entry to the function, its value is the index into the this
- string at which to start searching for the \p from substring, the value
- must be non-negative and not greater than this string's length; upon exiting
- the function its value is the index into this string at which the
- replacement took place or -1 if no replacement took place; if the pointer
- is null, searching always starts at index 0
-
- @since LibreOffice 3.6
- */
- template< typename T >
- SAL_WARN_UNUSED_RESULT typename internal::ConstCharArrayDetector< T, OUString >::Type replaceFirst( T& from, OUString const & to,
- sal_Int32 * index = 0) const
- {
- rtl_uString * s = 0;
- sal_Int32 i = 0;
- assert( strlen( from ) == internal::ConstCharArrayDetector< T >::size - 1 );
- rtl_uString_newReplaceFirstAsciiL(
- &s, pData, from, internal::ConstCharArrayDetector< T, void >::size - 1, to.pData, index == 0 ? &i : index);
- return OUString(s, SAL_NO_ACQUIRE);
- }
-
- /**
- Returns a new string resulting from replacing the first occurrence of a
- given substring with another substring.
-
- @param from ASCII string literal, the substring to be replaced
-
- @param to ASCII string literal, the substring to be replaced
-
- @param[in,out] index pointer to a start index; if the pointer is
- non-null: upon entry to the function, its value is the index into the this
- string at which to start searching for the \p from substring, the value
- must be non-negative and not greater than this string's length; upon exiting
- the function its value is the index into this string at which the
- replacement took place or -1 if no replacement took place; if the pointer
- is null, searching always starts at index 0
-
- @since LibreOffice 3.6
- */
- template< typename T1, typename T2 >
- SAL_WARN_UNUSED_RESULT typename internal::ConstCharArrayDetector< T1, typename internal::ConstCharArrayDetector< T2, OUString >::Type >::Type
- replaceFirst( T1& from, T2& to, sal_Int32 * index = 0) const
- {
- rtl_uString * s = 0;
- sal_Int32 i = 0;
- assert( strlen( from ) == internal::ConstCharArrayDetector< T1 >::size - 1 );
- assert( strlen( to ) == internal::ConstCharArrayDetector< T2 >::size - 1 );
- rtl_uString_newReplaceFirstAsciiLAsciiL(
- &s, pData, from, internal::ConstCharArrayDetector< T1, void >::size - 1, to,
- internal::ConstCharArrayDetector< T2, void >::size - 1, index == 0 ? &i : index);
- return OUString(s, SAL_NO_ACQUIRE);
- }
-
- /**
- Returns a new string resulting from replacing all occurrences of a given
- substring with another substring.
-
- Replacing subsequent occurrences picks up only after a given replacement.
- That is, replacing from "xa" to "xx" in "xaa" results in "xxa", not "xxx".
-
- @param from the substring to be replaced
-
- @param to the replacing substring
-
- @param fromIndex the position in the string where we will begin searching
-
- @since LibreOffice 4.0
- */
- SAL_WARN_UNUSED_RESULT OUString replaceAll(
- OUString const & from, OUString const & to, sal_Int32 fromIndex = 0) const
- {
- rtl_uString * s = 0;
- rtl_uString_newReplaceAllFromIndex(&s, pData, from.pData, to.pData, fromIndex);
- return OUString(s, SAL_NO_ACQUIRE);
- }
-
- /**
- Returns a new string resulting from replacing all occurrences of a given
- substring with another substring.
-
- Replacing subsequent occurrences picks up only after a given replacement.
- That is, replacing from "xa" to "xx" in "xaa" results in "xxa", not "xxx".
-
- @param from ASCII string literal, the substring to be replaced
-
- @param to the replacing substring
-
- @since LibreOffice 3.6
- */
- template< typename T >
- SAL_WARN_UNUSED_RESULT typename internal::ConstCharArrayDetector< T, OUString >::Type replaceAll( T& from, OUString const & to) const
- {
- rtl_uString * s = 0;
- assert( strlen( from ) == internal::ConstCharArrayDetector< T >::size - 1 );
- rtl_uString_newReplaceAllAsciiL(&s, pData, from, internal::ConstCharArrayDetector< T, void >::size - 1, to.pData);
- return OUString(s, SAL_NO_ACQUIRE);
- }
-
- /**
- Returns a new string resulting from replacing all occurrences of a given
- substring with another substring.
-
- Replacing subsequent occurrences picks up only after a given replacement.
- That is, replacing from "xa" to "xx" in "xaa" results in "xxa", not "xxx".
-
- @param from ASCII string literal, the substring to be replaced
-
- @param to ASCII string literal, the substring to be replaced
-
- @since LibreOffice 3.6
- */
- template< typename T1, typename T2 >
- SAL_WARN_UNUSED_RESULT typename internal::ConstCharArrayDetector< T1, typename internal::ConstCharArrayDetector< T2, OUString >::Type >::Type
- replaceAll( T1& from, T2& to ) const
- {
- rtl_uString * s = 0;
- assert( strlen( from ) == internal::ConstCharArrayDetector< T1 >::size - 1 );
- assert( strlen( to ) == internal::ConstCharArrayDetector< T2 >::size - 1 );
- rtl_uString_newReplaceAllAsciiLAsciiL(
- &s, pData, from, internal::ConstCharArrayDetector< T1, void >::size - 1,
- to, internal::ConstCharArrayDetector< T2, void >::size - 1);
- return OUString(s, SAL_NO_ACQUIRE);
- }
-
- /**
- Converts from this string all ASCII uppercase characters (65-90)
- to ASCII lowercase characters (97-122).
-
- This function can't be used for language specific conversion.
- If the string doesn't contain characters which must be converted,
- then the new string is assigned with str.
-
- @return the string, converted to ASCII lowercase.
- */
- SAL_WARN_UNUSED_RESULT OUString toAsciiLowerCase() const SAL_THROW(())
- {
- rtl_uString* pNew = 0;
- rtl_uString_newToAsciiLowerCase( &pNew, pData );
- return OUString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Converts from this string all ASCII lowercase characters (97-122)
- to ASCII uppercase characters (65-90).
-
- This function can't be used for language specific conversion.
- If the string doesn't contain characters which must be converted,
- then the new string is assigned with str.
-
- @return the string, converted to ASCII uppercase.
- */
- SAL_WARN_UNUSED_RESULT OUString toAsciiUpperCase() const SAL_THROW(())
- {
- rtl_uString* pNew = 0;
- rtl_uString_newToAsciiUpperCase( &pNew, pData );
- return OUString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns a new string resulting from removing white space from both ends
- of the string.
-
- All characters that have codes less than or equal to
- 32 (the space character) are considered to be white space.
- If the string doesn't contain white spaces at both ends,
- then the new string is assigned with str.
-
- @return the string, with white space removed from the front and end.
- */
- SAL_WARN_UNUSED_RESULT OUString trim() const SAL_THROW(())
- {
- rtl_uString* pNew = 0;
- rtl_uString_newTrim( &pNew, pData );
- return OUString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns a token in the string.
-
- Example:
- sal_Int32 nIndex = 0;
- do
- {
- ...
- OUString aToken = aStr.getToken( 0, ';', nIndex );
- ...
- }
- while ( nIndex >= 0 );
-
- @param token the number of the token to return
- @param cTok the character which seperate the tokens.
- @param index the position at which the token is searched in the
- string.
- The index must not be greater than the length of the
- string.
- This param is set to the position of the
- next token or to -1, if it is the last token.
- @return the token; if either token or index is negative, an empty token
- is returned (and index is set to -1)
- */
- OUString getToken( sal_Int32 token, sal_Unicode cTok, sal_Int32& index ) const SAL_THROW(())
- {
- rtl_uString * pNew = 0;
- index = rtl_uString_getToken( &pNew, pData, token, cTok, index );
- return OUString( pNew, (DO_NOT_ACQUIRE *)0 );
- }
-
- /**
- Returns a token from the string.
-
- The same as getToken(sal_Int32, sal_Unicode, sal_Int32 &), but always
- passing in 0 as the start index in the third argument.
-
- @param count the number of the token to return, starting with 0
- @param separator the character which separates the tokens
-
- @return the given token, or an empty string
-
- @since LibreOffice 3.6
- */
- OUString getToken(sal_Int32 count, sal_Unicode separator) const {
- sal_Int32 n = 0;
- return getToken(count, separator, n);
- }
-
- /**
- Returns the Boolean value from this string.
-
- This function can't be used for language specific conversion.
-
- @return sal_True, if the string is 1 or "True" in any ASCII case.
- sal_False in any other case.
- */
- sal_Bool toBoolean() const SAL_THROW(())
- {
- return rtl_ustr_toBoolean( pData->buffer );
- }
-
- /**
- Returns the first character from this string.
-
- @return the first character from this string or 0, if this string
- is emptry.
- */
- sal_Unicode toChar() const SAL_THROW(())
- {
- return pData->buffer[0];
- }
-
- /**
- Returns the int32 value from this string.
-
- This function can't be used for language specific conversion.
-
- @param radix the radix (between 2 and 36)
- @return the int32 represented from this string.
- 0 if this string represents no number or one of too large
- magnitude.
- */
- sal_Int32 toInt32( sal_Int16 radix = 10 ) const SAL_THROW(())
- {
- return rtl_ustr_toInt32( pData->buffer, radix );
- }
-
- /**
- Returns the int64 value from this string.
-
- This function can't be used for language specific conversion.
-
- @param radix the radix (between 2 and 36)
- @return the int64 represented from this string.
- 0 if this string represents no number or one of too large
- magnitude.
- */
- sal_Int64 toInt64( sal_Int16 radix = 10 ) const SAL_THROW(())
- {
- return rtl_ustr_toInt64( pData->buffer, radix );
- }
-
- /**
- Returns the uint64 value from this string.
-
- This function can't be used for language specific conversion.
-
- @param radix the radix (between 2 and 36)
- @return the uint64 represented from this string.
- 0 if this string represents no number or one of too large
- magnitude.
-
- @since LibreOffice 4.1
- */
- sal_uInt64 toUInt64( sal_Int16 radix = 10 ) const SAL_THROW(())
- {
- return rtl_ustr_toUInt64( pData->buffer, radix );
- }
-
- /**
- Returns the float value from this string.
-
- This function can't be used for language specific conversion.
-
- @return the float represented from this string.
- 0.0 if this string represents no number.
- */
- float toFloat() const SAL_THROW(())
- {
- return rtl_ustr_toFloat( pData->buffer );
- }
-
- /**
- Returns the double value from this string.
-
- This function can't be used for language specific conversion.
-
- @return the double represented from this string.
- 0.0 if this string represents no number.
- */
- double toDouble() const SAL_THROW(())
- {
- return rtl_ustr_toDouble( pData->buffer );
- }
-
-
- /**
- Return a canonical representation for a string.
-
- A pool of strings, initially empty is maintained privately
- by the string class. On invocation, if present in the pool
- the original string will be returned. Otherwise this string,
- or a copy thereof will be added to the pool and returned.
-
- @return
- a version of the string from the pool.
-
- @exception std::bad_alloc is thrown if an out-of-memory condition occurs
-
- @since UDK 3.2.7
- */
- OUString intern() const
- {
- rtl_uString * pNew = 0;
- rtl_uString_intern( &pNew, pData );
- if (pNew == 0) {
-#if defined EXCEPTIONS_OFF
- abort();
-#else
- throw std::bad_alloc();
-#endif
- }
- return OUString( pNew, (DO_NOT_ACQUIRE *)0 );
- }
-
- /**
- Return a canonical representation for a converted string.
-
- A pool of strings, initially empty is maintained privately
- by the string class. On invocation, if present in the pool
- the original string will be returned. Otherwise this string,
- or a copy thereof will be added to the pool and returned.
-
- @param value a 8-Bit character array.
- @param length the number of character which should be converted.
- The 8-Bit character array length must be
- greater than or equal to this value.
- @param encoding the text encoding from which the 8-Bit character
- sequence should be converted.
- @param convertFlags flags which controls the conversion.
- see RTL_TEXTTOUNICODE_FLAGS_...
- @param pInfo pointer to return conversion status or NULL.
-
- @return
- a version of the converted string from the pool.
-
- @exception std::bad_alloc is thrown if an out-of-memory condition occurs
-
- @since UDK 3.2.7
- */
- static OUString intern( const sal_Char * value, sal_Int32 length,
- rtl_TextEncoding encoding,
- sal_uInt32 convertFlags = OSTRING_TO_OUSTRING_CVTFLAGS,
- sal_uInt32 *pInfo = NULL )
- {
- rtl_uString * pNew = 0;
- rtl_uString_internConvert( &pNew, value, length, encoding,
- convertFlags, pInfo );
- if (pNew == 0) {
-#if defined EXCEPTIONS_OFF
- abort();
-#else
- throw std::bad_alloc();
-#endif
- }
- return OUString( pNew, (DO_NOT_ACQUIRE *)0 );
- }
-
- /**
- Converts to an OString, signalling failure.
-
- @param pTarget
- An out parameter receiving the converted OString. Must not be null; the
- contents are not modified if conversion fails (convertToOString returns
- false).
-
- @param nEncoding
- The text encoding to convert into. Must be an octet encoding (i.e.,
- rtl_isOctetTextEncoding(nEncoding) must return true).
-
- @param nFlags
- A combination of RTL_UNICODETOTEXT_FLAGS that detail how to do the
- conversion (see rtl_convertUnicodeToText). RTL_UNICODETOTEXT_FLAGS_FLUSH
- need not be included, it is implicitly assumed. Typical uses are either
- RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR |
- RTL_UNICODETOTEXT_FLAGS_INVALID_ERROR (fail if a Unicode character cannot
- be converted to the target nEncoding) or OUSTRING_TO_OSTRING_CVTFLAGS
- (make a best efforts conversion).
-
- @return
- True if the conversion succeeded, false otherwise.
- */
- inline bool convertToString(OString * pTarget, rtl_TextEncoding nEncoding,
- sal_uInt32 nFlags) const
- {
- return rtl_convertUStringToString(&pTarget->pData, pData->buffer,
- pData->length, nEncoding, nFlags);
- }
-
- /** Iterate through this string based on code points instead of UTF-16 code
- units.
-
- See Chapter 3 of The Unicode Standard 5.0 (Addison--Wesley, 2006) for
- definitions of the various terms used in this description.
-
- This string is interpreted as a sequence of zero or more UTF-16 code
- units. For each index into this sequence (from zero to one less than
- the length of the sequence, inclusive), a code point represented
- starting at the given index is computed as follows:
-
- - If the UTF-16 code unit addressed by the index constitutes a
- well-formed UTF-16 code unit sequence, the computed code point is the
- scalar value encoded by that UTF-16 code unit sequence.
-
- - Otherwise, if the index is at least two UTF-16 code units away from
- the end of the sequence, and the sequence of two UTF-16 code units
- addressed by the index constitutes a well-formed UTF-16 code unit
- sequence, the computed code point is the scalar value encoded by that
- UTF-16 code unit sequence.
-
- - Otherwise, the computed code point is the UTF-16 code unit addressed
- by the index. (This last case catches unmatched surrogates as well as
- indices pointing into the middle of surrogate pairs.)
-
- @param indexUtf16
- pointer to a UTF-16 based index into this string; must not be null. On
- entry, the index must be in the range from zero to the length of this
- string (in UTF-16 code units), inclusive. Upon successful return, the
- index will be updated to address the UTF-16 code unit that is the given
- incrementCodePoints away from the initial index.
-
- @param incrementCodePoints
- the number of code points to move the given *indexUtf16. If
- non-negative, moving is done after determining the code point at the
- index. If negative, moving is done before determining the code point
- at the (then updated) index. The value must be such that the resulting
- UTF-16 based index is in the range from zero to the length of this
- string (in UTF-16 code units), inclusive.
-
- @return
- the code point (an integer in the range from 0 to 0x10FFFF, inclusive)
- that is represented within this string starting at the index computed as
- follows: If incrementCodePoints is non-negative, the index is the
- initial value of *indexUtf16; if incrementCodePoints is negative, the
- index is the updated value of *indexUtf16. In either case, the computed
- index must be in the range from zero to one less than the length of this
- string (in UTF-16 code units), inclusive.
-
- @since UDK 3.2.7
- */
- inline sal_uInt32 iterateCodePoints(
- sal_Int32 * indexUtf16, sal_Int32 incrementCodePoints = 1) const
- {
- return rtl_uString_iterateCodePoints(
- pData, indexUtf16, incrementCodePoints);
- }
-
- /**
- Returns the string representation of the integer argument.
-
- This function can't be used for language specific conversion.
-
- @param i an integer value
- @param radix the radix (between 2 and 36)
- @return a string with the string representation of the argument.
- @since LibreOffice 4.1
- */
- static OUString number( int i, sal_Int16 radix = 10 )
- {
- sal_Unicode aBuf[RTL_USTR_MAX_VALUEOFINT32];
- rtl_uString* pNewData = 0;
- rtl_uString_newFromStr_WithLength( &pNewData, aBuf, rtl_ustr_valueOfInt32( aBuf, i, radix ) );
- return OUString( pNewData, (DO_NOT_ACQUIRE*)0 );
- }
- /// @overload
- /// @since LibreOffice 4.1
- static OUString number( unsigned int i, sal_Int16 radix = 10 )
- {
- return number( static_cast< unsigned long long >( i ), radix );
- }
- /// @overload
- /// @since LibreOffice 4.1
- static OUString number( long i, sal_Int16 radix = 10)
- {
- return number( static_cast< long long >( i ), radix );
- }
- /// @overload
- /// @since LibreOffice 4.1
- static OUString number( unsigned long i, sal_Int16 radix = 10 )
- {
- return number( static_cast< unsigned long long >( i ), radix );
- }
- /// @overload
- /// @since LibreOffice 4.1
- static OUString number( long long ll, sal_Int16 radix = 10 )
- {
- sal_Unicode aBuf[RTL_STR_MAX_VALUEOFINT64];
- rtl_uString* pNewData = 0;
- rtl_uString_newFromStr_WithLength( &pNewData, aBuf, rtl_ustr_valueOfInt64( aBuf, ll, radix ) );
- return OUString( pNewData, (DO_NOT_ACQUIRE*)0 );
- }
- /// @overload
- /// @since LibreOffice 4.1
- static OUString number( unsigned long long ll, sal_Int16 radix = 10 )
- {
- sal_Unicode aBuf[RTL_STR_MAX_VALUEOFUINT64];
- rtl_uString* pNewData = 0;
- rtl_uString_newFromStr_WithLength( &pNewData, aBuf, rtl_ustr_valueOfUInt64( aBuf, ll, radix ) );
- return OUString( pNewData, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns the string representation of the float argument.
-
- This function can't be used for language specific conversion.
-
- @param f a float.
- @return a string with the string representation of the argument.
- @since LibreOffice 4.1
- */
- static OUString number( float f )
- {
- sal_Unicode aBuf[RTL_USTR_MAX_VALUEOFFLOAT];
- rtl_uString* pNewData = 0;
- rtl_uString_newFromStr_WithLength( &pNewData, aBuf, rtl_ustr_valueOfFloat( aBuf, f ) );
- return OUString( pNewData, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns the string representation of the double argument.
-
- This function can't be used for language specific conversion.
-
- @param d a double.
- @return a string with the string representation of the argument.
- @since LibreOffice 4.1
- */
- static OUString number( double d )
- {
- sal_Unicode aBuf[RTL_USTR_MAX_VALUEOFDOUBLE];
- rtl_uString* pNewData = 0;
- rtl_uString_newFromStr_WithLength( &pNewData, aBuf, rtl_ustr_valueOfDouble( aBuf, d ) );
- return OUString( pNewData, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns the string representation of the sal_Bool argument.
-
- If the sal_Bool is true, the string "true" is returned.
- If the sal_Bool is false, the string "false" is returned.
- This function can't be used for language specific conversion.
-
- @param b a sal_Bool.
- @return a string with the string representation of the argument.
- @deprecated use boolean()
- */
- SAL_DEPRECATED_INTERNAL("use boolean()") static OUString valueOf( sal_Bool b ) SAL_THROW(())
- {
- return boolean(b);
- }
-
- /**
- Returns the string representation of the boolean argument.
-
- If the argument is true, the string "true" is returned.
- If the argument is false, the string "false" is returned.
- This function can't be used for language specific conversion.
-
- @param b a bool.
- @return a string with the string representation of the argument.
- @since LibreOffice 4.1
- */
- static OUString boolean( bool b ) SAL_THROW(())
- {
- sal_Unicode aBuf[RTL_USTR_MAX_VALUEOFBOOLEAN];
- rtl_uString* pNewData = 0;
- rtl_uString_newFromStr_WithLength( &pNewData, aBuf, rtl_ustr_valueOfBoolean( aBuf, b ) );
- return OUString( pNewData, (DO_NOT_ACQUIRE*)0 );
- }
-
- /**
- Returns the string representation of the char argument.
-
- @param c a character.
- @return a string with the string representation of the argument.
- @deprecated use operator, function or constructor taking char or sal_Unicode argument
- */
- SAL_DEPRECATED_INTERNAL("convert to OUString or use directly") static OUString valueOf( sal_Unicode c ) SAL_THROW(())
- {
- return OUString( &c, 1 );
- }
-
- /**
- Returns the string representation of the int argument.
-
- This function can't be used for language specific conversion.
-
- @param i a int32.
- @param radix the radix (between 2 and 36)
- @return a string with the string representation of the argument.
- @deprecated use number()
- */
- SAL_DEPRECATED_INTERNAL("use number()") static OUString valueOf( sal_Int32 i, sal_Int16 radix = 10 ) SAL_THROW(())
- {
- return number( i, radix );
- }
-
- /**
- Returns the string representation of the long argument.
-
- This function can't be used for language specific conversion.
-
- @param ll a int64.
- @param radix the radix (between 2 and 36)
- @return a string with the string representation of the argument.
- @deprecated use number()
- */
- SAL_DEPRECATED_INTERNAL("use number()") static OUString valueOf( sal_Int64 ll, sal_Int16 radix = 10 ) SAL_THROW(())
- {
- return number( ll, radix );
- }
-
- /**
- Returns the string representation of the float argument.
-
- This function can't be used for language specific conversion.
-
- @param f a float.
- @return a string with the string representation of the argument.
- @deprecated use number()
- */
- SAL_DEPRECATED_INTERNAL("use number()") static OUString valueOf( float f ) SAL_THROW(())
- {
- return number(f);
- }
-
- /**
- Returns the string representation of the double argument.
-
- This function can't be used for language specific conversion.
-
- @param d a double.
- @return a string with the string representation of the argument.
- @deprecated use number()
- */
- SAL_DEPRECATED_INTERNAL("use number()") static OUString valueOf( double d ) SAL_THROW(())
- {
- return number(d);
- }
-
- /**
- Returns a OUString copied without conversion from an ASCII
- character string.
-
- Since this method is optimized for performance, the ASCII character
- values are not converted in any way. The caller has to make sure that
- all ASCII characters are in the allowed range between 0 and
- 127. The ASCII string must be NULL-terminated.
-
- Note that for string literals it is simpler and more efficient
- to directly use the OUString constructor.
-
- @param value the 8-Bit ASCII character string
- @return a string with the string representation of the argument.
- */
- static OUString createFromAscii( const sal_Char * value ) SAL_THROW(())
- {
- rtl_uString* pNew = 0;
- rtl_uString_newFromAscii( &pNew, value );
- return OUString( pNew, (DO_NOT_ACQUIRE*)0 );
- }
-};
-
-/* ======================================================================= */
-
-#ifdef RTL_FAST_STRING
-/**
-A simple wrapper around string literal. It is usually not necessary to use, can
-be mostly used to force OUString operator+ working with operands that otherwise would
-not trigger it.
-
-This class is not part of public API and is meant to be used only in LibreOffice code.
-@since LibreOffice 4.0
-*/
-struct SAL_WARN_UNUSED OUStringLiteral
-{
- template< int N >
- OUStringLiteral( const char (&str)[ N ] ) : size( N - 1 ), data( str ) { assert( strlen( str ) == N - 1 ); }
- int size;
- const char* data;
-};
-
-/**
- @internal
-*/
-template<>
-struct ToStringHelper< OUString >
- {
- static int length( const OUString& s ) { return s.getLength(); }
- static sal_Unicode* addData( sal_Unicode* buffer, const OUString& s ) { return addDataHelper( buffer, s.getStr(), s.getLength()); }
- static const bool allowOStringConcat = false;
- static const bool allowOUStringConcat = true;
- };
-
-/**
- @internal
-*/
-template<>
-struct ToStringHelper< OUStringLiteral >
- {
- static int length( const OUStringLiteral& str ) { return str.size; }
- static sal_Unicode* addData( sal_Unicode* buffer, const OUStringLiteral& str ) { return addDataLiteral( buffer, str.data, str.size ); }
- static const bool allowOStringConcat = false;
- static const bool allowOUStringConcat = true;
- };
-
-/**
- @internal
-*/
-template< typename charT, typename traits, typename T1, typename T2 >
-inline std::basic_ostream<charT, traits> & operator <<(
- std::basic_ostream<charT, traits> & stream, const OUStringConcat< T1, T2 >& concat)
-{
- return stream << OUString( concat );
-}
-#else
-// non-RTL_FAST_CODE needs this to compile
-typedef OUString OUStringLiteral;
-#endif
-
-/** A helper to use OUStrings with hash maps.
-
- Instances of this class are unary function objects that can be used as
- hash function arguments to boost::unordered_map and similar constructs.
- */
-struct OUStringHash
-{
- /** Compute a hash code for a string.
-
- @param rString
- a string.
-
- @return
- a hash code for the string. This hash code should not be stored
- persistently, as its computation may change in later revisions.
- */
- size_t operator()(const OUString& rString) const
- { return (size_t)rString.hashCode(); }
-};
-
-/* ======================================================================= */
-
-/** Convert an OString to an OUString, using a specific text encoding.
-
- The lengths of the two strings may differ (e.g., for double-byte
- encodings, UTF-7, UTF-8).
-
- @param rStr
- an OString to convert.
-
- @param encoding
- the text encoding to use for conversion.
-
- @param convertFlags
- flags which control the conversion. Either use
- OSTRING_TO_OUSTRING_CVTFLAGS, or see
- <http://udk.openoffice.org/cpp/man/spec/textconversion.html> for more
- details.
- */
-inline OUString OStringToOUString( const OString & rStr,
- rtl_TextEncoding encoding,
- sal_uInt32 convertFlags = OSTRING_TO_OUSTRING_CVTFLAGS )
-{
- return OUString( rStr.getStr(), rStr.getLength(), encoding, convertFlags );
-}
-
-/** Convert an OUString to an OString, using a specific text encoding.
-
- The lengths of the two strings may differ (e.g., for double-byte
- encodings, UTF-7, UTF-8).
-
- @param rUnicode
- an OUString to convert.
-
- @param encoding
- the text encoding to use for conversion.
-
- @param convertFlags
- flags which control the conversion. Either use
- OUSTRING_TO_OSTRING_CVTFLAGS, or see
- <http://udk.openoffice.org/cpp/man/spec/textconversion.html> for more
- details.
- */
-inline OString OUStringToOString( const OUString & rUnicode,
- rtl_TextEncoding encoding,
- sal_uInt32 convertFlags = OUSTRING_TO_OSTRING_CVTFLAGS )
-{
- return OString( rUnicode.getStr(), rUnicode.getLength(), encoding, convertFlags );
-}
-
-/* ======================================================================= */
-
-/**
- Support for rtl::OUString in std::ostream (and thus in
- CPPUNIT_ASSERT or SAL_INFO macros, for example).
-
- The rtl::OUString is converted to UTF-8.
-
- @since LibreOffice 3.5.
-*/
-template< typename charT, typename traits >
-inline std::basic_ostream<charT, traits> & operator <<(
- std::basic_ostream<charT, traits> & stream, OUString const & string)
-{
- return stream <<
- OUStringToOString(string, RTL_TEXTENCODING_UTF8).getStr();
- // best effort; potentially loses data due to conversion failures
- // (stray surrogate halves) and embedded null characters
-}
-
-} // namespace
-
-#ifdef RTL_STRING_UNITTEST
-namespace rtl
-{
-typedef rtlunittest::OUString OUString;
-}
-#endif
-
-// RTL_USING is defined by gbuild for all modules except those with stable public API
-// (as listed in ure/source/README). It allows to use classes like OUString without
-// having to explicitly refer to the rtl namespace, which is kind of superfluous
-// given that OUString itself is namespaced by its OU prefix.
-#ifdef RTL_USING
-using ::rtl::OUString;
-using ::rtl::OUStringHash;
-using ::rtl::OStringToOUString;
-using ::rtl::OUStringToOString;
-using ::rtl::OUStringLiteral;
-#endif
-
-#endif /* _RTL_USTRING_HXX */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/uuid.h b/sal/inc/rtl/uuid.h
deleted file mode 100644
index 31d50968110a..000000000000
--- a/sal/inc/rtl/uuid.h
+++ /dev/null
@@ -1,182 +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 _RTL_UUID_H_
-#define _RTL_UUID_H_
-
-#include "sal/config.h"
-
-#include "rtl/string.h"
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-/**
- @file
- Specification (from draft-leach-uuids-guids-01.txt )
-
- <p>
- A UUID is an identifier that is unique across both space and time,
- with respect to the space of all UUIDs. To be precise, the UUID
- consists of a finite bit space. Thus, collision cannot be avoided in
- principle. A UUID can be used for multiple purposes, from tagging objects
- with an extremely short lifetime, to reliably identifying very persistent
- objects across a network.
-
- <p>
- The generation of UUIDs does not require that a registration
- authority be contacted for each identifier. Instead, Version 4 UUIDs are
- generated from (pseudo unique) sequences of (pseudo) random bits.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Generates a new Version 4 (random number based) UUID (Universally Unique
- IDentifier).
-
- @param pTargetUUID pointer to at least 16 bytes of memory. After the call it contains
- the newly generated uuid in network byte order.
- @param pPredecessorUUID ignored (was used when this function returned
- Version 1 instead of Version 4 UUIDs).
- @param bUseEthernetAddress ignored (was used when this function returned
- Version 1 instead of Version 4 UUIDs).
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_createUuid(
- sal_uInt8 *pTargetUUID,
- const sal_uInt8 *pPredecessorUUID,
- sal_Bool bUseEthernetAddress );
-
-/** Compare two UUID's lexically
-
- <p>
- Note: lexical ordering is not temporal ordering!
- <p>
- Note: For equalnesschecking, a memcmp(pUUID1,pUUID2,16) is more efficient
-
- @return
- <ul>
- <li>-1 u1 is lexically before u2
- <li>0 u1 is equal to u2
- <li>1 u1 is lexically after u2
- </ul>
-
- */
-SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_compareUuid(
- const sal_uInt8 *pUUID1 , const sal_uInt8 *pUUID2 );
-
-/** Creates named UUIDs.
-
- <p>
- The version 3 UUID is meant for generating UUIDs from <em>names</em> that
- are drawn from, and unique within, some <em>name space</em>. Some examples
- of names (and, implicitly, name spaces) might be DNS names, URLs, ISO
- Object IDs (OIDs), reserved words in a programming language, or X.500
- Distinguished Names (DNs); thus, the concept of name and name space
- should be broadly construed, and not limited to textual names.
-
- <p>
- The requirements for such UUIDs are as follows:
-
- <ul>
- <li> The UUIDs generated at different times from the same name in the
- same namespace MUST be equal
-
- <li> The UUIDs generated from two different names in the same namespace
- should be different (with very high probability)
-
- <li> The UUIDs generated from the same name in two different namespaces
- should be different with (very high probability)
-
- <li> If two UUIDs that were generated from names are equal, then they
- were generated from the same name in the same namespace (with very
- high probability).
- </ul>
-
- @param pTargetUUID pointer to at least 16 bytes of memory. After the call
- it contains the newly generated uuid in network byte order.
- @param pNameSpaceUUID The namespace uuid. Below are some predefined ones,
- but any arbitray uuid can be used as namespace.
-
- @param pName the name
- */
-SAL_DLLPUBLIC void SAL_CALL rtl_createNamedUuid(
- sal_uInt8 *pTargetUUID,
- const sal_uInt8 *pNameSpaceUUID,
- const rtl_String *pName
- );
-
-
-
-/*
- Predefined Namespaces
- (Use them the following way : sal_uInt8 aNsDNS[16]) = RTL_UUID_NAMESPACE_DNS;
- */
-/** namesapce DNS
-
- <p>
- (Use them the following way : sal_uInt8 aNsDNS[16]) = RTL_UUID_NAMESPACE_DNS;
- <p>
- 6ba7b810-9dad-11d1-80b4-00c04fd430c8 */
-#define RTL_UUID_NAMESPACE_DNS {\
- 0x6b,0xa7,0xb8,0x10,\
- 0x9d,0xad,\
- 0x11,0xd1,\
- 0x80, 0xb4, 0x00, 0xc0, 0x4f, 0xd4, 0x30, 0xc8\
- }
-
-/** namespace URL
-
- <p>
- 6ba7b811-9dad-11d1-80b4-00c04fd430c8 */
-#define RTL_UUID_NAMESPACE_URL { \
- 0x6b, 0xa7, 0xb8, 0x11,\
- 0x9d, 0xad,\
- 0x11, 0xd1,\
- 0x80, 0xb4, 0x00, 0xc0, 0x4f, 0xd4, 0x30, 0xc8\
- }
-
-/** namespace oid
-
- <p>
- 6ba7b812-9dad-11d1-80b4-00c04fd430c8 */
-#define RTL_UUID_NAMESPACE_OID {\
- 0x6b, 0xa7, 0xb8, 0x12,\
- 0x9d, 0xad,\
- 0x11, 0xd1,\
- 0x80, 0xb4, 0x00, 0xc0, 0x4f, 0xd4, 0x30, 0xc8\
- }
-
-/** namespace X500
-
- <p>
- 6ba7b814-9dad-11d1-80b4-00c04fd430c8 */
-#define RTL_UUID_NAMESPACE_X500 {\
- 0x6b, 0xa7, 0xb8, 0x14,\
- 0x9d, 0xad,\
- 0x11, 0xd1,\
- 0x80, 0xb4, 0x00, 0xc0, 0x4f, 0xd4, 0x30, 0xc8\
- }
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/sal/ByteBufferWrapper.hxx b/sal/inc/sal/ByteBufferWrapper.hxx
deleted file mode 100644
index 63bb618278d6..000000000000
--- a/sal/inc/sal/ByteBufferWrapper.hxx
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * Copyright 2012 LibreOffice contributors.
- *
- * 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/.
- */
-
-#ifndef _SAL_BYTEBUFFERWRAPPER_HXX
-#define _SAL_BYTEBUFFERWRAPPER_HXX
-
-#ifdef ANDROID
-
-#include <jni.h>
-
-#include <sal/types.h>
-
-namespace org { namespace libreoffice { namespace touch {
-
-class ByteBufferWrapper
-{
-private:
- jobject object;
-
-public:
- ByteBufferWrapper(JNIEnv *env, jobject o);
-
- sal_uInt8* pointer();
-
- void operator()(sal_uInt8 *p);
-};
-
-}; }; };
-
-#endif
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/sal/alloca.h b/sal/inc/sal/alloca.h
deleted file mode 100644
index c42f723f4af3..000000000000
--- a/sal/inc/sal/alloca.h
+++ /dev/null
@@ -1,66 +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_SAL_ALLOCA_H
-#define INCLUDED_SAL_ALLOCA_H
-
-#if defined (SOLARIS) || defined (LINUX) || defined(__EMX__) || defined(AIX) || defined(ANDROID)
-
-#ifndef INCLUDED_ALLOCA_H
-#include <alloca.h>
-#define INCLUDED_ALLOCA_H
-#endif
-
-#elif defined (FREEBSD) || defined(NETBSD) || defined(OPENBSD) || defined(DRAGONFLY)
-
-#ifndef INCLUDED_STDLIB_H
-#include <stdlib.h>
-#define INCLUDED_STDLIB_H
-#endif
-
-#elif defined (MACOSX)
-
-#ifndef INCLUDED_SYS_TYPES_H
-#include <sys/types.h>
-#define INCLUDED_SYS_TYPES_H
-#endif
-
-#elif defined (IOS)
-
-#ifndef INCLUDED_SYS_TYPES_H
-#include <sys/types.h>
-#define INCLUDED_SYS_TYPES_H
-#endif
-
-#elif defined (WNT)
-
-#ifndef INCLUDED_MALLOC_H
-#include <malloc.h>
-#define INCLUDED_MALLOC_H
-#endif
-
-#else
-
-#error "unknown platform: please check for alloca"
-
-#endif
-
-#endif /* INCLUDED_SAL_ALLOCA_H */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/sal/config.h b/sal/inc/sal/config.h
deleted file mode 100644
index ee230fe49d69..000000000000
--- a/sal/inc/sal/config.h
+++ /dev/null
@@ -1,100 +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 _SAL_CONFIG_H_
-#define _SAL_CONFIG_H_
-
-#if defined LIBO_INTERNAL_ONLY
-#include "config_global.h"
-#endif
-
-#include <stdlib.h>
-
-#ifdef WIN32
-#define SAL_W32
-#define SAL_DLLEXTENSION ".dll"
-#define SAL_PRGEXTENSION ".exe"
-#define SAL_PATHSEPARATOR ';'
-#define SAL_PATHDELIMITER '\\'
-#define SAL_CONFIGFILE( name ) name ".ini"
-
-#ifdef _MSC_VER
-
-#ifndef _USE_MATH_DEFINES
-#define _USE_MATH_DEFINES // needed by Visual C++ for math constants
-#endif
-
-#endif /* defined _MSC_VER */
-
-/* Provide ISO C99 compatible versions of snprint and vsnprintf */
-#ifdef __MINGW32__
-#define _SNPRINTF_DLLIMPORT
-#endif
-#ifndef _SNPRINTF_H
-#include <systools/win32/snprintf.h>
-#endif
-
-#endif /* defined WIN32 */
-
-#if defined(SOLARIS) || defined(LINUX) || defined(NETBSD) || defined(FREEBSD) || \
- defined(AIX) || defined(OPENBSD) || defined(DRAGONFLY) || defined(ANDROID)
-#define SAL_UNX
-#define SAL_DLLEXTENSION ".so"
-#define SAL_DLLPREFIX "lib"
-#define SAL_PRGEXTENSION ".bin"
-#define SAL_PATHSEPARATOR ':'
-#define SAL_PATHDELIMITER '/'
-#define SAL_CONFIGFILE( name ) name "rc"
-#endif
-
-#ifdef MACOSX
-#define SAL_UNX
-#define SAL_DLLEXTENSION ".dylib"
-#define SAL_DLLPREFIX "lib"
-#define SAL_PRGEXTENSION ".bin"
-#define SAL_PATHSEPARATOR ':'
-#define SAL_PATHDELIMITER '/'
-#define SAL_CONFIGFILE( name ) name "rc"
-#endif
-
-#ifdef IOS
-#define SAL_UNX
-/* SAL_DLLEXTENSION should not really be used on iOS, as iOS apps are
- * not allowed to load own dynamic libraries.
- */
-#define SAL_DLLEXTENSION ".dylib"
-#define SAL_DLLPREFIX "lib"
-/* This is fairly pointless too, an iOS app consists of a single
- * executable (plus data files).
- */
-#define SAL_PRGEXTENSION ".bin"
-#define SAL_PATHSEPARATOR ':'
-#define SAL_PATHDELIMITER '/'
-#define SAL_CONFIGFILE( name ) name "rc"
-#endif
-
-#ifdef sun
-#undef sun
-#define sun sun
-#endif
-
-#endif /*_SAL_CONFIG_H_ */
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/sal/detail/log.h b/sal/inc/sal/detail/log.h
deleted file mode 100644
index 5cfc5e5fc0cc..000000000000
--- a/sal/inc/sal/detail/log.h
+++ /dev/null
@@ -1,106 +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/.
- */
-
-#ifndef INCLUDED_SAL_DETAIL_LOG_H
-#define INCLUDED_SAL_DETAIL_LOG_H
-
-#include "sal/config.h"
-
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-/** @cond INTERNAL */
-
-/* This header makes available replacements working in both C and C++ for the
- obsolete osl/diagnose.h functionality that in turn is used from both C and
- C++ code and the obsolete tools/debug.hxx and
- canvas/inc/canvas/verbosetrace.hxx functionality that uses printf-style
- formatting. Once that obsolete functionality is removed, this header can be
- removed, too.
-
- This header uses variadic macros in both C (where they are officially only
- supported since C99) and C++ (where they are officially only supported since
- C++11). It appears that all relevant compilers (esp. GCC 4.0 and MS VS 2008
- Express) already support them in their C and C++ dialects. See also
- <http://wiki.apache.org/stdcxx/C++0xCompilerSupport>.
-
- Avoid the use of other sal code in this header as much as possible, so that
- this code can be called from other sal code without causing endless
- recursion.
-*/
-
-#if defined __cplusplus
-extern "C" {
-#endif
-
-/*
- Clang warns about 'sal_True && sal_True' (those being integers and not booleans)
- when it sees preprocessed source (-save-temps or using icecream)
-*/
-#if defined __cplusplus
-#define SAL_LOG_TRUE true
-#define SAL_LOG_FALSE false
-#else
-#define SAL_LOG_TRUE sal_True
-#define SAL_LOG_FALSE sal_False
-#endif
-
-enum sal_detail_LogLevel {
- SAL_DETAIL_LOG_LEVEL_INFO, SAL_DETAIL_LOG_LEVEL_WARN,
- SAL_DETAIL_LOG_LEVEL_DEBUG = SAL_MAX_ENUM
-};
-
-SAL_DLLPUBLIC void SAL_CALL sal_detail_logFormat(
- enum sal_detail_LogLevel level, char const * area, char const * where,
- char const * format, ...)
-/* TODO: enabling this will produce a huge amount of -Werror=format errors: */
-#if defined __GNUC__ && 0
- __attribute__((format(printf, 4, 5)))
-#endif
- ;
-
-#if defined __cplusplus
-}
-#endif
-
-#define SAL_DETAIL_LOG_FORMAT(condition, level, area, where, ...) \
- do { \
- if (condition) { \
- sal_detail_logFormat((level), (area), (where), __VA_ARGS__); \
- } \
- } while (SAL_LOG_FALSE)
-
-#if defined SAL_LOG_INFO
-#define SAL_DETAIL_ENABLE_LOG_INFO SAL_LOG_TRUE
-#else
-#define SAL_DETAIL_ENABLE_LOG_INFO SAL_LOG_FALSE
-#endif
-#if defined SAL_LOG_WARN
-#define SAL_DETAIL_ENABLE_LOG_WARN SAL_LOG_TRUE
-#else
-#define SAL_DETAIL_ENABLE_LOG_WARN SAL_LOG_FALSE
-#endif
-
-#define SAL_DETAIL_WHERE __FILE__ ":" SAL_STRINGIFY(__LINE__) ": "
-
-#define SAL_DETAIL_INFO_IF_FORMAT(condition, area, ...) \
- SAL_DETAIL_LOG_FORMAT( \
- SAL_DETAIL_ENABLE_LOG_INFO && (condition), SAL_DETAIL_LOG_LEVEL_INFO, \
- area, SAL_DETAIL_WHERE, __VA_ARGS__)
-
-#define SAL_DETAIL_WARN_IF_FORMAT(condition, area, ...) \
- SAL_DETAIL_LOG_FORMAT( \
- SAL_DETAIL_ENABLE_LOG_WARN && (condition), SAL_DETAIL_LOG_LEVEL_WARN, \
- area, SAL_DETAIL_WHERE, __VA_ARGS__)
-
-/** @endcond */
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/sal/log-areas.dox b/sal/inc/sal/log-areas.dox
deleted file mode 100644
index d21f14388d96..000000000000
--- a/sal/inc/sal/log-areas.dox
+++ /dev/null
@@ -1,355 +0,0 @@
-// NOTE: This file is also parsed by a compiler plugin. Make sure all
-// areas are marked with '@li @c'.
-
-/**
-@page sal_log_areas SAL debug areas
-
-@short List and description of areas for the SAL debug macros
-
-This is a list of areas that are used by the SAL_INFO family of macros. See
-@ref sal_log "basic log functionality" for details about this functionality.
-
-If you need a debug area in some code, first check this list and use the
-appropriate area if it exists. This list is not definite, if you need a new
-area, use it and add it to an appropriate section with an explanation.
-Generally, use the name of the relevant code module as the first area segment.
-Please keep all entries sorted.
-
-This list should give you an overview of which areas to enable when debugging
-certain functionality.
-
-@section SAL
-
-@li @c sal.debug - SAL debugging functionality
-@li @c sal.osl - SAL OSL library
-@li @c sal.rtl - SAL RTL library
-@li @c sal.textenc - the textencoding SAL library
-
-@section basctl
-
-@li @c basctl.basicide
-
-@section basebmp
-
-@li @c basebmp.bitmapdevice
-
-@section basic
-
-@li @c basic
-@li @c basic.sbx
-
-@section canvas
-
-@li @c canvas
-@li @c canvas.cairo
-@li @c canvas.null
-
-@section chart2
-
-@li @c chart2
-@li @c chart2.areachart
-
-@section connectivity
-
-@li @c connectivity.cpool
-@li @c connectivity.commontools
-@li @c connectivity.mork
-@li @c connectivity.parse
-@li @c connectivity.postgresql
-
-@section cui
-
-@li @c cui.customize
-@li @c cui.dialogs
-@li @c cui.factory
-@li @c cui.options
-@li @c cui.tabpages
-
-@section Calc
-
-@li @c sc
-@li @c sc.core
-@li @c sc.ui - Calc UI
-
-@section desktop
-
-@li @c desktop
-@li @c desktop.deployment
-@li @c desktop.migration
-
-@section Draw
-
-@li @c sd
-@li @c sd.fwk
-@li @c sd.sls - slidesorter
-@li @c sd.tools
-@li @c sd.ui
-@li @c sd.view
-@li @c sd.slideshow
-@li @c sdremote
-@li @c sdremote.bluetooth
-
-@section editeng
-
-@li @c editeng
-@li @c editeng.items
-
-@section embeddedobj
-
-@li @c embeddedobj - embedded objects
-@li @c embeddedobj.ole - OLE embedded objects
-
-@section extensions
-
-@li @c extensions.dbpilots
-@li @c extensions.plugin
-@li @c extensions.scanner
-@li @c extensions.update
-
-@section Filter
-
-@li @c filter.ms - escher import/export
-@li @c filter.xslt - xslt import/export
-@li @c oox.xmlstream - XmlStream class
-@li @c oox.storage - ZipStorage class
-@li @c oox.ppt - pptx filter
-
-@section formula
-
-@li @c formula.core
-
-@section fpicker
-
-@li @c fpicker.aqua
-@li @c fpicker.office
-
-@section framework
-
-@li @c fwk - framework
-@li @c fwk.desktop
-@li @c fwk.session
-
-@section i18nlangtag
-
-@li @c i18nlangtag - language tags
-
-@section i18npool
-
-@li @c i18npool - general i18npool
-
-@section i18n
-
-@li @c i18n - module independent i18n related, e.g. language tag usage
-
-@section io
-
-@li @c io.streams
-
-@section jvmfwk
-
-@li @c jfw
-@li @c jfw.level1
-@li @c jfw.level2
-
-@section Math
-
-@li @c starmath.rtf
-@li @c starmath.ooxml - OOXML import/export
-@li @c starmath.wordbase
-
-@section sdext
-
-@li @c sdext.minimizer
-@li @c sdext.pdfimport
-@li @c sdext.pdfimport.pdfparse
-@li @c sdext.presenter
-
-@section sfx2
-
-@li @c sfx2
-@li @c sfx2.appl
-@li @c sfx2.bastyp
-@li @c sfx2.config
-@li @c sfx2.control
-@li @c sfx2.dialog
-@li @c sfx2.doc
-@li @c sfx2.notify
-@li @c sfx2.view
-
-@section slideshow
-
-@li @c slideshow.opengl
-@li @c slideshow.eventqueue
-
-@section svl
-
-@li @c svl
-@li @c svl.numbers
-
-@section svtools
-
-@li @c svtools.config
-@li @c svtools.contnr
-@li @c svtools.control
-@li @c svtools.dialogs
-@li @c svtools.filter
-@li @c svtools.misc
-@li @c svtools.table
-@li @c svtools.uno
-
-@section svx
-
-@li @c svx.dialog
-@li @c svx.fmcomp
-@li @c svx.form
-@li @c svx.stbcrtls - StatusBarControl
-@li @c svx.table
-@li @c svx.tbxcrtls - ToolboxControl
-@li @c svx.sdr
-@li @c svx.uno
-
-@section toolkit
-
-@li @c toolkit.controls
-
-@section tools
-
-@li @c tools.debug
-@li @c tools.datetime
-@li @c tools.generic
-@li @c tools.memtools
-@li @c tools.rc - resource manager
-@li @c tools.stream - SvStream class
-
-@section ucb
-
-@li @c cmisucp
-@li @c ucb.ucp
-@li @c ucb.ucp.gio
-@li @c ucb.ucp.webdav
-
-@section unotools
-
-@li @c unotools.config
-@li @c unotools.i18n
-@li @c unotools.misc
-@li @c unotools.ucbhelper
-
-@section URE
-
-@li @c rtl.string - ::rtl::OString, ::rtl::OUString, and related functionality
-@li @c salhelper.thread - ::salhelper::Thread class
-
-@section sax
-
-@li @c sax.cppunit
-
-@section stoc
-
-@li @c stoc.corerefl - CoreReflection
-@li @c stoc.tdmanager - TypeDescriptionManager
-
-@section svl
-
-@li @c svl.items
-
-@section VCL
-
-@li @c vcl
-@li @c vcl.a11y
-@li @c vcl.atsui - ATSUI (obsolete) -using code for Mac OS X
-@li @c vcl.control
-@li @c vcl.coretext - CoreText-using code for Mac OS X and iOS
-@li @c vcl.fonts - font-specific code
-@li @c vcl.gdi - the GDI part of VCL, devices, bitmaps, etc.
-@li @c vcl.gtk - Gtk+ 2/3 plugin
-@li @c vcl.headless - bitmap-based backend
-@li @c vcl.kde - KDE
-@li @c vcl.kde4 - KDE4
-@li @c vcl.layout - Widget layout
-@li @c vcl.scrollbar - Scroll Bars
-@li @c vcl.sm - Session Manager
-@li @c vcl.window
-@li @c vcl.unity
-@li @c vcl.virdev
-
-@section Writer
-
-@li @c sw
-@li @c sw.core - Writer core
-@li @c sw.docx
-@li @c sw.envelp
-@li @c sw.level2
-@li @c sw.rtf - .rtf export filter
-@li @c sw.uno - Writer UNO interfaces
-@li @c sw.ww8 - .doc/.docx export filter, .doc import filter (not writerfilter)
-@li @c sw.ww8.level2 - further info for sw.ww8
-
-@section writerfilter
-
-@li @c writerfilter
-@li @c writerfilter.profile - load times of filters
-
-@section xmloff
-
-@li @c xmloff.core
-@li @c xmloff.forms
-@li @c xmloff.chart
-@li @c xmloff.style
-
-@section xmlsecurity
-
-@li @c xmlsecurity.dialogs - xml security dialogs
-@li @c xmlsecurity.helper
-@li @c xmlsecurity.xmlsec - xmlsec wrapper
-
-@section xmlscript
-
-@li @c xmlscript.xmlhelper
-@li @c xmlscript.xmldlg
-@li @c xmlscript.xmlflat
-@li @c xmlscript.xmllib
-@li @c xmlscript.xmlmod
-
-@section dbaccess
-
-@li @c dbaccess
-@li @c dbaccess.ui
-
-@section svx
-
-@li @c svx
-@li @c svx.fmcmop
-
-@section other
-
-@li @c accessibility
-@li @c avmedia
-@li @c basebmp
-@li @c binaryurp
-@li @c bridges
-@li @c comphelper
-@li @c configmgr
-@li @c cppcanvas
-@li @c cppuhelper
-@li @c cppu
-@li @c forms
-@li @c helpcompiler
-@li @c linguistic
-@li @c oox
-@li @c package
-@li @c rsc
-@li @c sax
-@li @c shell
-@li @c stoc
-@li @c svg
-@li @c ucbhelper
-@li @c unoidl
-@li @c uui
-@li @c vbahelper
-@li @c xmlhelp
-@li @c xmloff
-@li @c xmlreader
-
-*/
-/* vim:set ft=cpp shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/sal/log.hxx b/sal/inc/sal/log.hxx
deleted file mode 100644
index 6eae1b59d43c..000000000000
--- a/sal/inc/sal/log.hxx
+++ /dev/null
@@ -1,317 +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/.
- */
-
-#ifndef INCLUDED_SAL_LOG_HXX
-#define INCLUDED_SAL_LOG_HXX
-
-#include "sal/config.h"
-
-#include <cstdlib>
-#include <sstream>
-#include <string>
-
-#include "sal/detail/log.h"
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-// Avoid the use of other sal code in this header as much as possible, so that
-// this code can be called from other sal code without causing endless
-// recursion.
-
-/// @cond INTERNAL
-
-extern "C" SAL_DLLPUBLIC void SAL_CALL sal_detail_log(
- enum sal_detail_LogLevel level, char const * area, char const * where,
- char const * message);
-
-namespace sal { namespace detail {
-
-inline void SAL_CALL log(
- sal_detail_LogLevel level, char const * area, char const * where,
- std::ostringstream const & stream)
-{
- // An alternative would be to have sal_detail_log take a std::ostringstream
- // pointer (via a C void pointer); the advantage would be smaller client
- // code (the ".str().c_str()" part would move into the implementation of
- // sal_detail_log) and potential for proper support of embedded null
- // characters within the message, but the disadvantage would be dependence
- // on the C++ ABI; as a compromise, the ".str().c_str()" part has been moved
- // to this inline function so that it is potentially only emitted once per
- // dynamic library:
- sal_detail_log(level, area, where, stream.str().c_str());
-}
-
-// Special handling of the common case where the message consists of just a
-// string literal, to produce smaller call-site code:
-
-struct StreamStart {};
-
-struct StreamString {
- StreamString(char const * s): string(s) {}
-
- char const * string;
-
- typedef char Result;
-};
-
-struct StreamIgnore {
- typedef struct { char a[2]; } Result;
-};
-
-inline StreamString operator <<(
- SAL_UNUSED_PARAMETER StreamStart const &, char const * s)
-{
- return StreamString(s);
-}
-
-template< typename T > inline StreamIgnore operator <<(
- SAL_UNUSED_PARAMETER StreamStart const &, SAL_UNUSED_PARAMETER T const &)
-{
- std::abort();
-#if defined _MSC_VER && _MSC_VER < 1700
- return StreamIgnore();
-#endif
-}
-
-template< typename T > inline StreamIgnore operator <<(
- SAL_UNUSED_PARAMETER StreamString const &, SAL_UNUSED_PARAMETER T const &)
-{
- std::abort();
-#if defined _MSC_VER && _MSC_VER < 1700
- return StreamIgnore();
-#endif
-}
-
-template< typename T > inline StreamIgnore operator <<(
- SAL_UNUSED_PARAMETER StreamIgnore const &, SAL_UNUSED_PARAMETER T const &)
-{
- std::abort();
-#if defined _MSC_VER && _MSC_VER < 1700
- return StreamIgnore();
-#endif
-}
-
-template< typename T > typename T::Result getResult(T const &);
-
-inline char const * unwrapStream(StreamString const & s) { return s.string; }
-
-inline char const * unwrapStream(SAL_UNUSED_PARAMETER StreamIgnore const &) {
- std::abort();
-#if defined _MSC_VER && _MSC_VER < 1700
- return 0;
-#endif
-}
-
-} }
-
-#define SAL_DETAIL_LOG_STREAM(condition, level, area, where, stream) \
- do { \
- if (condition) { \
- if (sizeof ::sal::detail::getResult( \
- ::sal::detail::StreamStart() << stream) == 1) \
- { \
- ::sal_detail_log( \
- (level), (area), (where), \
- ::sal::detail::unwrapStream( \
- ::sal::detail::StreamStart() << stream)); \
- } else { \
- ::std::ostringstream sal_detail_stream; \
- sal_detail_stream << stream; \
- ::sal::detail::log( \
- (level), (area), (where), sal_detail_stream); \
- } \
- } \
- } while (false)
-
-/// @endcond
-
-/** A simple macro to create a "file and line number" string.
-
- Potentially not only useful within the log framework (where it is used
- automatically), but also when creating exception messages.
-
- @attention For now, this functionality should only be used internally within
- LibreOffice. It may change again in a future version.
-
- @since LibreOffice 3.5
-*/
-#define SAL_WHERE SAL_DETAIL_WHERE
-
-/** A facility for generating temporary string messages by piping items into a
- C++ std::ostringstream.
-
- This can be useful for example in a call to SAL_INFO when depending on some
- boolean condition data of incompatible types shall be streamed into the
- message, as in:
-
- SAL_INFO("foo", "object: " << (hasName ? obj->name : SAL_STREAM(obj)));
-
- @attention For now, this functionality should only be used internally within
- LibreOffice. It may change again in a future version.
-
- @since LibreOffice 3.5
-*/
-#define SAL_STREAM(stream) \
- (dynamic_cast< ::std::ostringstream & >(::std::ostringstream() << stream). \
- str())
-
-/**
- @page sal_log Basic logging functionality.
-
- @short Macros for logging.
-
- SAL_INFO(char const * area, expr),
- SAL_INFO_IF(bool condition, char const * area, expr),
- SAL_WARN(char const * area, expr),
- SAL_WARN_IF(bool condition, char const * area, expr), and SAL_DEBUG(expr)
- produce an info, warning, or debug log entry with a message produced by
- piping items into a C++ std::ostringstream. The given expr must be so that
- the full expression "stream << expr" is valid, where stream is a variable of
- type std::ostringstream.
-
- SAL_INFO("foo", "string " << s << " of length " << n)
-
- would be an example of such a call.
-
- The composed message should be in UTF-8 and it should contain no vertical
- formatting characters and no null characters
-
- For the _IF variants, log output is only generated if the given condition is
- true (in addition to the other conditions that have to be met).
-
- The SAL_DEBUG macro is for temporary debug statements that are used while
- working on code. It is never meant to remain in the code. It will always
- simply output the given expression in debug builds.
-
- For all the other macros, the given area argument must be non-null and must
- match the regular expression
-
- @verbatim
- <area> ::= <segment>("."<segment>)*
- @endverbatim
-
- with
-
- @verbatim
- <segment> ::= [0-9a-z]+
- @endverbatim
-
- For a list of areas used see @ref sal_log_areas "SAL debug areas". Whenever
- you use a new log area, add it to the file sal/inc/sal/log-areas.dox .
-
- Whether these macros generate any log output is controlled in a two-stage
- process.
-
- First, at compile time the macros SAL_LOG_INFO and SAL_LOG_WARN,
- respectively, control whether the INFO and WARN macros, respectively,
- expand to actual code (in case the macro is defined, to any value) or to
- no-ops (in case the macro is not defined).
-
- Second, at runtime the environment variable SAL_LOG further limits which
- macro calls actually generate log output. The environment variable SAL_LOG
- must either be unset or must match the regular expression
-
- @verbatim
- <env> ::= <switch>*
- @endverbatim
-
- with
-
- @verbatim
- <switch> ::= <sense><level>("."<area>)?
- <sense> ::= "+"|"-"
- <level> ::= "INFO"|"WARN"
- @endverbatim
-
- If the environment variable is unset, "+WARN" is used instead (which results
- in all warnings being output but no infos). If the given value does not
- match the regular expression, "+INFO+WARN" is used instead (which in turn
- results in everything being output).
-
- A given macro call's level (INFO or WARN) and area is matched against the
- given switches as follows: Only those switches for which the level matches
- the given level and for which the area is a prefix (including both empty and
- full prefixes) of the given area are considered. Log output is generated if
- and only if among the longest such switches (if any), there is at least one
- that has a sense of "+". (That is, if both +INFO.foo and -INFO.foo are
- present, +INFO.foo wins.)
-
- For example, if SAL_LOG is "+INFO-INFO.foo+INFO.foo.bar", then calls like
- SAL_INFO("foo.bar", ...), SAL_INFO("foo.bar.baz", ...), or
- SAL_INFO("other", ...) generate output, while calls like
- SAL_INFO("foo", ...) or SAL_INFO("foo.barzzz", ...) do not.
-
- The generated log output consists of the given level ("info" or "warn"), the
- given area, the process ID, the thread ID, the source file, and the source
- line number, each followed by a colon, followed by a space, the given
- message, and a newline. The precise format of the log output is subject to
- change. The log output is printed to stderr without further text encoding
- conversion.
-
- @see @ref sal_log_areas
-
- @attention For now, this functionality should only be used internally within
- LibreOffice. It may change again in a future version.
-
- @since LibreOffice 3.5
-*/
-
-/**
- Produce log entry from stream in the given log area.
-
- See @ref sal_log "basic logging functionality" for details.
-*/
-#define SAL_INFO(area, stream) \
- SAL_DETAIL_LOG_STREAM( \
- SAL_DETAIL_ENABLE_LOG_INFO, ::SAL_DETAIL_LOG_LEVEL_INFO, area, \
- SAL_WHERE, stream)
-
-/**
- Produce log entry from stream in the given log area if condition is true.
-
- See @ref sal_log "basic logging functionality" for details.
-*/
-#define SAL_INFO_IF(condition, area, stream) \
- SAL_DETAIL_LOG_STREAM( \
- SAL_DETAIL_ENABLE_LOG_INFO && (condition), \
- ::SAL_DETAIL_LOG_LEVEL_INFO, area, SAL_WHERE, stream)
-
-/**
- Produce warning entry from stream in the given log area.
-
- See @ref sal_log "basic logging functionality" for details.
-*/
-#define SAL_WARN(area, stream) \
- SAL_DETAIL_LOG_STREAM( \
- SAL_DETAIL_ENABLE_LOG_WARN, ::SAL_DETAIL_LOG_LEVEL_WARN, area, \
- SAL_WHERE, stream)
-
-/**
- Produce warning entry from stream in the given log area if condition is true.
-
- See @ref sal_log "basic logging functionality" for details.
-*/
-#define SAL_WARN_IF(condition, area, stream) \
- SAL_DETAIL_LOG_STREAM( \
- SAL_DETAIL_ENABLE_LOG_WARN && (condition), \
- ::SAL_DETAIL_LOG_LEVEL_WARN, area, SAL_WHERE, stream)
-
-/**
- Produce temporary debugging output from stream. This macro is meant to be
- used only while working on code and should never exist in production code.
-
- See @ref sal_log "basic logging functionality" for details.
-*/
-#define SAL_DEBUG(stream) \
- SAL_DETAIL_LOG_STREAM( \
- SAL_LOG_TRUE, ::SAL_DETAIL_LOG_LEVEL_DEBUG, 0, 0, stream)
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/sal/macros.h b/sal/inc/sal/macros.h
deleted file mode 100644
index 262f81996657..000000000000
--- a/sal/inc/sal/macros.h
+++ /dev/null
@@ -1,66 +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 _SAL_MACROS_H_
-#define _SAL_MACROS_H_
-
-#include <stddef.h>
-
-#ifndef SAL_N_ELEMENTS
-# if defined(__cplusplus) && ( defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L )
- /*
- * Magic template to calculate at compile time the number of elements
- * in an array. Enforcing that the argument must be a array and not
- * a pointer, e.g.
- * char *pFoo="foo";
- * SAL_N_ELEMENTS(pFoo);
- * fails while
- * SAL_N_ELEMENTS("foo");
- * or
- * char aFoo[]="foo";
- * SAL_N_ELEMENTS(aFoo);
- * pass
- *
- * Unfortunately if arr is an array of an anonymous class then we need
- * C++0x, i.e. see
- * http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
- */
- template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
-# define SAL_N_ELEMENTS(arr) (sizeof(sal_n_array_size(arr)))
-# else
-# define SAL_N_ELEMENTS(arr) (sizeof (arr) / sizeof ((arr)[0]))
-# endif
-#endif
-
-#ifndef SAL_BOUND
-# define SAL_BOUND(x,l,h) ((x) <= (l) ? (l) : ((x) >= (h) ? (h) : (x)))
-#endif
-
-#ifndef SAL_ABS
-# define SAL_ABS(a) (((a) < 0) ? (-(a)) : (a))
-#endif
-
-#ifndef SAL_STRINGIFY
-# define SAL_STRINGIFY_ARG(x) #x
-# define SAL_STRINGIFY(x) SAL_STRINGIFY_ARG(x)
-#endif
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/sal/main.h b/sal/inc/sal/main.h
deleted file mode 100644
index 634b57cac534..000000000000
--- a/sal/inc/sal/main.h
+++ /dev/null
@@ -1,149 +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 _SAL_MAIN_H_
-#define _SAL_MAIN_H_
-
-#include "sal/config.h"
-
-#include "sal/saldllapi.h"
-#include "sal/types.h"
-
-#if defined AIX
-#include <unistd.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-SAL_DLLPUBLIC void SAL_CALL sal_detail_initialize(int argc, char ** argv);
-SAL_DLLPUBLIC void SAL_CALL sal_detail_deinitialize();
-
-#if defined IOS || defined ANDROID
-
-#error No code that includes this should be built for iOS or Android
-
-#else
-
-#define SAL_MAIN_WITH_ARGS_IMPL \
-int SAL_CALL main(int argc, char ** argv) \
-{ \
- int ret; \
- sal_detail_initialize(argc, argv); \
- ret = sal_main_with_args(argc, argv); \
- sal_detail_deinitialize(); \
- return ret; \
-}
-
-#define SAL_MAIN_IMPL \
-int SAL_CALL main(int argc, char ** argv) \
-{ \
- int ret; \
- sal_detail_initialize(argc, argv); \
- ret = sal_main(); \
- sal_detail_deinitialize(); \
- return ret; \
-}
-
-#endif
-
-
-/* Definition macros for CRT entries */
-
-#ifdef SAL_W32
-
-#include <stdlib.h>
-
-/* Sorry but this is neccessary cause HINSTANCE is a typedef that differs (C++ causes an error) */
-
-#ifndef WINAPI
-# define WINAPI __stdcall
-#endif
-
-#if !defined(DECLARE_HANDLE)
-# ifdef STRICT
- typedef void *HANDLE;
-# define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
-# else
- typedef void *PVOID;
- typedef PVOID HANDLE;
-# define DECLARE_HANDLE(name) typedef HANDLE name
-# endif
-DECLARE_HANDLE(HINSTANCE);
-#endif
-
-
-
-#define SAL_WIN_WinMain \
-int WINAPI WinMain( HINSTANCE _hinst, HINSTANCE _dummy, char* _cmdline, int _nshow ) \
-{ \
- int argc = __argc; char ** argv = __argv; \
- (void) _hinst; (void) _dummy; (void) _cmdline; (void) _nshow; /* unused */ \
- return main(argc, argv); \
-}
-
-#else /* ! SAL_W32 */
-
-# define SAL_WIN_WinMain
-
-#endif /* ! SAL_W32 */
-
-/* Implementation macro */
-
-#define SAL_IMPLEMENT_MAIN_WITH_ARGS(_argc_, _argv_) \
- static int SAL_CALL sal_main_with_args (int _argc_, char ** _argv_); \
- SAL_MAIN_WITH_ARGS_IMPL \
- SAL_WIN_WinMain \
- static int SAL_CALL sal_main_with_args(int _argc_, char ** _argv_)
-
-#define SAL_IMPLEMENT_MAIN() \
- static int SAL_CALL sal_main(void); \
- SAL_MAIN_IMPL \
- SAL_WIN_WinMain \
- static int SAL_CALL sal_main(void)
-
-/*
- "How to use" Examples:
-
- #include <sal/main.h>
-
- SAL_IMPLEMENT_MAIN()
- {
- DoSomething();
-
- return 0;
- }
-
- SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
- {
- DoSomethingWithArgs(argc, argv);
-
- return 0;
- }
-
-*/
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* _SAL_MAIN_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/sal/mathconf.h b/sal/inc/sal/mathconf.h
deleted file mode 100644
index fefd213e3684..000000000000
--- a/sal/inc/sal/mathconf.h
+++ /dev/null
@@ -1,156 +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_SAL_MATHCONF_H
-#define INCLUDED_SAL_MATHCONF_H
-
-#include "osl/endian.h"
-
-#include <float.h>
-
-#if defined SOLARIS
-#include <ieeefp.h>
-#endif /* SOLARIS */
-
-#if defined(__cplusplus) && ( defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L )
-#include <cmath>
-#endif
-
-#if defined(IOS)
-#if defined(__cplusplus)
-#include <cmath>
-#else
-#include <math.h>
-#endif
-#endif
-
-#if defined __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/* Generally, the C standard guarantees that at program startup, "trapping or
- stopping (if supported) is disabled on all [floating-point] exceptions"
- (F.7.3/1 of the August 3, 1998 draft of C99), and that during program
- execution, "a programmer can safely assume default modes (or be unaware of
- them)" (7.6/2, footnote 161 of the August 3, 1998 draft of C99). Reportedly,
- on Windows there are printer drivers that switch on exceptions. To avoid
- problems, the SAL_MATH_FPEXCEPTIONS_OFF macro can be used to explicitly
- switch off exceptions (on Windows).
- */
-#if defined WNT
-#define SAL_MATH_FPEXCEPTIONS_OFF() _control87( _MCW_EM, _MCW_EM )
-#else /* WNT */
-#define SAL_MATH_FPEXCEPTIONS_OFF()
-#endif /* WNT */
-
-
-/* SAL_MATH_FINITE(d): test double d on INFINITY, NaN et al. */
-#if !defined SOLARIS && !defined ANDROID \
- && defined(__cplusplus) \
- && ( defined(__GXX_EXPERIMENTAL_CXX0X__) \
- || __cplusplus >= 201103L \
- || defined(IOS) )
-#define SAL_MATH_FINITE(d) std::isfinite(d)
-#elif defined( IOS )
-#define SAL_MATH_FINITE(d) isfinite(d)
-#elif defined( WNT)
-#define SAL_MATH_FINITE(d) _finite(d)
-#elif defined LINUX || defined UNX
-#define SAL_MATH_FINITE(d) finite(d)
-#else /* WNT, LINUX, UNX */
-#error "SAL_MATH_FINITE not defined"
-#endif /* WNT, LINUX, UNX */
-
-
-/* This needs to be fixed for non--IEEE-754 platforms: */
-#if 1 /* IEEE 754 supported */
-#if defined OSL_BIGENDIAN
-
-/* IEEE 754 double structures for BigEndian */
-union sal_math_Double
-{
- struct
- {
- unsigned sign : 1;
- unsigned exponent :11;
- unsigned fraction_hi :20;
- unsigned fraction_lo :32;
- } inf_parts;
- struct
- {
- unsigned sign : 1;
- unsigned exponent :11;
- unsigned qnan_bit : 1;
- unsigned bits :19;
- unsigned fraction_lo :32;
- } nan_parts;
- struct
- {
- unsigned msw :32;
- unsigned lsw :32;
- } w32_parts;
- double value;
-};
-
-#elif defined OSL_LITENDIAN
-
-/* IEEE 754 double structures for LittleEndian */
-union sal_math_Double
-{
- struct {
- unsigned fraction_lo :32;
- unsigned fraction_hi :20;
- unsigned exponent :11;
- unsigned sign : 1;
- } inf_parts;
- struct {
- unsigned fraction_lo :32;
- unsigned bits :19;
- unsigned qnan_bit : 1;
- unsigned exponent :11;
- unsigned sign : 1;
- } nan_parts;
- struct
- {
- unsigned lsw :32;
- unsigned msw :32;
- } w32_parts;
- double value;
-};
-
-#else /* OSL_BIGENDIAN, OSL_LITENDIAN */
-
-#error "neither OSL_BIGENDIAN nor OSL_LITENDIAN"
-
-#endif /* OSL_BIGENDIAN, OSL_LITENDIAN */
-#else /* IEEE 754 supported */
-
-#error "don't know how to handle IEEE 754"
-
-#endif /* IEEE 754 supported */
-
-
-#if defined __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* INCLUDED_SAL_MATHCONF_H */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/sal/saldllapi.h b/sal/inc/sal/saldllapi.h
deleted file mode 100644
index f45e50e1cc5b..000000000000
--- a/sal/inc/sal/saldllapi.h
+++ /dev/null
@@ -1,35 +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_SALDLLAPI_H
-#define INCLUDED_SALDLLAPI_H
-
-#include "sal/config.h"
-
-#include "sal/types.h"
-
-#if defined(SAL_DLLIMPLEMENTATION)
-#define SAL_DLLPUBLIC SAL_DLLPUBLIC_EXPORT
-#else
-#define SAL_DLLPUBLIC SAL_DLLPUBLIC_IMPORT
-#endif
-
-#endif /* INCLUDED_SALDLLAPI_H */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/sal/types.h b/sal/inc/sal/types.h
deleted file mode 100644
index 55f2e729ac8b..000000000000
--- a/sal/inc/sal/types.h
+++ /dev/null
@@ -1,566 +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 _SAL_TYPES_H_
-#define _SAL_TYPES_H_
-
-#include <sal/config.h>
-#include <sal/macros.h>
-
-#include <sal/typesizes.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/********************************************************************************/
-/* Data types
-*/
-
-/* Boolean */
-typedef unsigned char sal_Bool;
-# define sal_False ((sal_Bool)0)
-# define sal_True ((sal_Bool)1)
-
-/* char is assumed to always be 1 byte long */
-typedef signed char sal_Int8;
-typedef unsigned char sal_uInt8;
-
-#if SAL_TYPES_SIZEOFSHORT == 2
- typedef signed short sal_Int16;
- typedef unsigned short sal_uInt16;
-#else
- #error "Could not find 16-bit type, add support for your architecture"
-#endif
-
-#if SAL_TYPES_SIZEOFLONG == 4
- typedef signed long sal_Int32;
- typedef unsigned long sal_uInt32;
- #define SAL_PRIdINT32 "ld"
- #define SAL_PRIuUINT32 "lu"
- #define SAL_PRIxUINT32 "lx"
- #define SAL_PRIXUINT32 "lX"
-#elif SAL_TYPES_SIZEOFINT == 4
- typedef signed int sal_Int32;
- typedef unsigned int sal_uInt32;
- #define SAL_PRIdINT32 "d"
- #define SAL_PRIuUINT32 "u"
- #define SAL_PRIxUINT32 "x"
- #define SAL_PRIXUINT32 "X"
-#else
- #error "Could not find 32-bit type, add support for your architecture"
-#endif
-
-#ifdef _MSC_VER
- typedef __int64 sal_Int64;
- typedef unsigned __int64 sal_uInt64;
-
- /* The following are macros that will add the 64 bit constant suffix. */
- #define SAL_CONST_INT64(x) x##i64
- #define SAL_CONST_UINT64(x) x##ui64
-
- #define SAL_PRIdINT64 "I64d"
- #define SAL_PRIuUINT64 "I64u"
- #define SAL_PRIxUINT64 "I64x"
- #define SAL_PRIXUINT64 "I64X"
-#elif defined(__SUNPRO_CC) || defined(__SUNPRO_C) || defined (__GNUC__) || defined (sgi)
- #if SAL_TYPES_SIZEOFLONG == 8
- typedef signed long int sal_Int64;
- typedef unsigned long int sal_uInt64;
-
-
- /* The following are macros that will add the 64 bit constant suffix. */
- #define SAL_CONST_INT64(x) x##l
- #define SAL_CONST_UINT64(x) x##ul
-
- #define SAL_PRIdINT64 "ld"
- #define SAL_PRIuUINT64 "lu"
- #define SAL_PRIxUINT64 "lx"
- #define SAL_PRIXUINT64 "lX"
- #elif SAL_TYPES_SIZEOFLONGLONG == 8
- typedef signed long long sal_Int64;
- typedef unsigned long long sal_uInt64;
-
- /* The following are macros that will add the 64 bit constant suffix. */
- #define SAL_CONST_INT64(x) x##ll
- #define SAL_CONST_UINT64(x) x##ull
-
- #ifdef __MINGW32__
- #define SAL_PRIdINT64 "I64d"
- #define SAL_PRIuUINT64 "I64u"
- #define SAL_PRIxUINT64 "I64x"
- #define SAL_PRIXUINT64 "I64X"
- #else
- #define SAL_PRIdINT64 "lld"
- #define SAL_PRIuUINT64 "llu"
- #define SAL_PRIxUINT64 "llx"
- #define SAL_PRIXUINT64 "llX"
- #endif
- #else
- #error "Could not find 64-bit type, add support for your architecture"
- #endif
-#else
- #error "Please define the 64-bit types for your architecture/compiler in sal/inc/sal/types.h"
-#endif
-
-typedef char sal_Char;
-typedef signed char sal_sChar;
-typedef unsigned char sal_uChar;
-
-#if ( defined(SAL_W32) && !defined(__MINGW32__) )
- // http://msdn.microsoft.com/en-us/library/s3f49ktz%28v=vs.80%29.aspx
- // "By default wchar_t is a typedef for unsigned short."
- // But MinGW has a native wchar_t, and on many places, we cannot deal with
- // that, so sal_Unicode has to be explicitly typedef'd as sal_uInt16 there.
- typedef wchar_t sal_Unicode;
-#else
- #define SAL_UNICODE_NOTEQUAL_WCHAR_T
- typedef sal_uInt16 sal_Unicode;
-#endif
-
-typedef void * sal_Handle;
-
-/* sal_Size should currently be the native width of the platform */
-#if SAL_TYPES_SIZEOFPOINTER == 4
- typedef sal_uInt32 sal_Size;
- typedef sal_Int32 sal_sSize;
-#elif SAL_TYPES_SIZEOFPOINTER == 8
- typedef sal_uInt64 sal_Size;
- typedef sal_Int64 sal_sSize;
-#else
- #error "Please make sure SAL_TYPES_SIZEOFPOINTER is defined for your architecture/compiler"
-#endif
-
-/* sal_PtrDiff holds the result of a pointer subtraction */
-#if SAL_TYPES_SIZEOFPOINTER == 4
- typedef sal_Int32 sal_PtrDiff;
-#elif SAL_TYPES_SIZEOFPOINTER == 8
- typedef sal_Int64 sal_PtrDiff;
-#else
- #error "Please make sure SAL_TYPES_SIZEOFPOINTER is defined for your architecture/compiler"
-#endif
-
-/* printf-style conversion specification length modifiers for size_t and
- ptrdiff_t (most platforms support C99, MSC has its own extension) */
-#if defined(_MSC_VER) || defined(__MINGW32__)
- #define SAL_PRI_SIZET "I"
- #define SAL_PRI_PTRDIFFT "I"
-#else
- #define SAL_PRI_SIZET "z"
- #define SAL_PRI_PTRDIFFT "t"
-#endif
-
-/* sal_IntPtr, sal_uIntPtr are integer types designed to hold pointers so that any valid
- * pointer to void can be converted to this type and back to a pointer to void and the
- * result will compare to the original pointer */
-#if SAL_TYPES_SIZEOFPOINTER == 4
- typedef sal_Int32 sal_IntPtr;
- typedef sal_uInt32 sal_uIntPtr;
- #define SAL_PRIdINTPTR SAL_PRIdINT32
- #define SAL_PRIuUINTPTR SAL_PRIuUINT32
- #define SAL_PRIxUINTPTR SAL_PRIxUINT32
- #define SAL_PRIXUINTPTR SAL_PRIXUINT32
-#elif SAL_TYPES_SIZEOFPOINTER == 8
- typedef sal_Int64 sal_IntPtr;
- typedef sal_uInt64 sal_uIntPtr;
- #define SAL_PRIdINTPTR SAL_PRIdINT64
- #define SAL_PRIuUINTPTR SAL_PRIuUINT64
- #define SAL_PRIxUINTPTR SAL_PRIxUINT64
- #define SAL_PRIXUINTPTR SAL_PRIXUINT64
-#else
- #error "Please make sure SAL_TYPES_SIZEOFPOINTER is defined for your architecture/compiler"
-#endif
-
-/********************************************************************************/
-/* Useful defines
- */
-
-/* The following SAL_MIN_INTn defines codify the assumption that the signed
- * sal_Int types use two's complement representation. Defining them as
- * "-0x7F... - 1" instead of as "-0x80..." prevents warnings about applying the
- * unary minus operator to unsigned quantities.
- */
-#define SAL_MIN_INT8 ((sal_Int8) (-0x7F - 1))
-#define SAL_MAX_INT8 ((sal_Int8) 0x7F)
-#define SAL_MAX_UINT8 ((sal_uInt8) 0xFF)
-#define SAL_MIN_INT16 ((sal_Int16) (-0x7FFF - 1))
-#define SAL_MAX_INT16 ((sal_Int16) 0x7FFF)
-#define SAL_MAX_UINT16 ((sal_uInt16) 0xFFFF)
-#define SAL_MIN_INT32 ((sal_Int32) (-0x7FFFFFFF - 1))
-#define SAL_MAX_INT32 ((sal_Int32) 0x7FFFFFFF)
-#define SAL_MAX_UINT32 ((sal_uInt32) 0xFFFFFFFF)
-#define SAL_MIN_INT64 ((sal_Int64) (SAL_CONST_INT64(-0x7FFFFFFFFFFFFFFF) - 1))
-#define SAL_MAX_INT64 ((sal_Int64) SAL_CONST_INT64(0x7FFFFFFFFFFFFFFF))
-#define SAL_MAX_UINT64 ((sal_uInt64) SAL_CONST_UINT64(0xFFFFFFFFFFFFFFFF))
-
-#if SAL_TYPES_SIZEOFLONG == 4
-#define SAL_MAX_SSIZE SAL_MAX_INT32
-#define SAL_MAX_SIZE SAL_MAX_UINT32
-#elif SAL_TYPES_SIZEOFLONG == 8
-#define SAL_MAX_SSIZE SAL_MAX_INT64
-#define SAL_MAX_SIZE SAL_MAX_UINT64
-#endif
-
-#if defined(SAL_W32) || defined(SAL_UNX)
-# define SAL_MAX_ENUM 0x7fffffff
-#endif
-
-#if defined(_MSC_VER) || defined(__MINGW32__)
-# define SAL_DLLPUBLIC_EXPORT __declspec(dllexport)
-# define SAL_JNI_EXPORT __declspec(dllexport)
-#if defined(_MSC_VER)
-# define SAL_DLLPUBLIC_IMPORT __declspec(dllimport)
-#else
-# define SAL_DLLPUBLIC_IMPORT
-#endif // defined(_MSC_VER)
-# define SAL_DLLPRIVATE
-# define SAL_DLLPUBLIC_TEMPLATE
-# define SAL_CALL __cdecl
-# define SAL_CALL_ELLIPSE __cdecl
-#elif defined SAL_UNX
-# if defined(__SUNPRO_CC) && (__SUNPRO_CC >= 0x550)
-# define SAL_DLLPUBLIC_EXPORT __global
-# define SAL_JNI_EXPORT __global
-# define SAL_DLLPUBLIC_IMPORT
-# define SAL_DLLPRIVATE __hidden
-# define SAL_DLLPUBLIC_TEMPLATE
-# elif defined(__SUNPRO_C ) && (__SUNPRO_C >= 0x550)
-# define SAL_DLLPUBLIC_EXPORT __global
-# define SAL_JNI_EXPORT __global
-# define SAL_DLLPUBLIC_IMPORT
-# define SAL_DLLPRIVATE __hidden
-# define SAL_DLLPUBLIC_TEMPLATE
-# elif defined(__GNUC__) && defined(HAVE_GCC_VISIBILITY_FEATURE)
-# if defined(DISABLE_DYNLOADING)
-# define SAL_DLLPUBLIC_EXPORT __attribute__ ((visibility("hidden")))
-# define SAL_JNI_EXPORT __attribute__ ((visibility("default")))
-# define SAL_DLLPUBLIC_IMPORT __attribute__ ((visibility("hidden")))
-# define SAL_DLLPRIVATE __attribute__ ((visibility("hidden")))
-# define SAL_DLLPUBLIC_TEMPLATE __attribute__ ((visibility("hidden")))
-# else
-# define SAL_DLLPUBLIC_EXPORT __attribute__ ((visibility("default")))
-# define SAL_JNI_EXPORT __attribute__ ((visibility("default")))
-# define SAL_DLLPUBLIC_IMPORT __attribute__ ((visibility("default")))
-# define SAL_DLLPRIVATE __attribute__ ((visibility("hidden")))
-# define SAL_DLLPUBLIC_TEMPLATE __attribute__ ((visibility("default")))
-# endif
-# else
-# define SAL_DLLPUBLIC_EXPORT
-# define SAL_JNI_EXPORT
-# define SAL_DLLPUBLIC_IMPORT
-# define SAL_DLLPRIVATE
-# define SAL_DLLPUBLIC_TEMPLATE
-# endif
-# define SAL_CALL
-# define SAL_CALL_ELLIPSE
-#else
-# error("unknown platform")
-#endif
-
-/**
- Exporting the symbols necessary for exception handling on GCC.
-
- These macros are used for inline declarations of exception classes, as in
- rtl/malformeduriexception.hxx.
-*/
-#if defined(__GNUC__) && ! defined(__MINGW32__)
-# if defined(DISABLE_DYNLOADING)
-# define SAL_EXCEPTION_DLLPUBLIC_EXPORT __attribute__((visibility("default")))
-# else
-# define SAL_EXCEPTION_DLLPUBLIC_EXPORT SAL_DLLPUBLIC_EXPORT
-# endif
-# define SAL_EXCEPTION_DLLPRIVATE SAL_DLLPRIVATE
-#else
-# define SAL_EXCEPTION_DLLPUBLIC_EXPORT
-# define SAL_EXCEPTION_DLLPRIVATE
-#endif
-
-/** Use this as markup for functions and methods whose return value must be
- checked.
-
- Compilers that support a construct of this nature will emit a compile
- time warning on unchecked return value.
-*/
-#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1))
-# define SAL_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
-#else
-# define SAL_WARN_UNUSED_RESULT
-#endif
-
-/** Use this for pure virtual classes, e.g. class SAL_NO_VTABLE Foo { ...
- This hinders the compiler from setting a generic vtable stating that
- a pure virtual function was called and thus slightly reduces code size.
-*/
-#ifdef _MSC_VER
-# define SAL_NO_VTABLE __declspec(novtable)
-#else
-# define SAL_NO_VTABLE
-#endif
-
-#ifdef SAL_W32
-# pragma pack(push, 8)
-#endif
-
-/** This is the binary specification of a SAL sequence.
- <br>
-*/
-typedef struct _sal_Sequence
-{
- /** reference count of sequence<br>
- */
- sal_Int32 nRefCount;
- /** element count<br>
- */
- sal_Int32 nElements;
- /** elements array<br>
- */
- char elements[1];
-} sal_Sequence;
-
-#define SAL_SEQUENCE_HEADER_SIZE ((sal_Size)&((sal_Sequence *)0)->elements)
-
-#if defined( SAL_W32)
-#pragma pack(pop)
-#endif
-
-/** Definition of function throw clause macros. These have been introduced
- to reduce code size by balancing out compiler bugs.
-
- These macros are ONLY for function declarations,
- use common C++ throw statement for throwing exceptions, e.g.
- throw RuntimeException();
-
- SAL_THROW() should be used for all C++ functions, e.g. SAL_THROW(())
- SAL_THROW_EXTERN_C() should be used for all C functions
-*/
-#ifdef __cplusplus
-#if defined(__GNUC__) || defined(__SUNPRO_CC) || defined(__sgi)
-#define SAL_THROW( exc )
-#else /* MSVC, all other */
-#define SAL_THROW( exc ) throw exc
-#endif /* __GNUC__, __SUNPRO_CC */
-#define SAL_THROW_EXTERN_C() throw ()
-#else /* ! __cplusplus */
-/* SAL_THROW() must not be used in C headers, only SAL_THROW_EXTERN_C() is defined */
-#define SAL_THROW_EXTERN_C()
-#endif
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#ifdef __cplusplus
-
-enum __sal_NoAcquire
-{
- /** definition of a no acquire enum for ctors
- */
- SAL_NO_ACQUIRE
-};
-
-namespace com { namespace sun { namespace star { } } }
-
-/** short-circuit extra-verbose API namespaces
-
- @since LibreOffice 4.0
-*/
-namespace css = ::com::sun::star;
-
-/** C++11 "= delete" feature.
-
- With HAVE_CXX11_DELETE, calling a deleted function will cause a compile-time
- error, while otherwise it will only cause a link-time error as the declared
- function is not defined.
-
- @since LibreOffice 4.1
-*/
-#if HAVE_CXX11_DELETE
-#define SAL_DELETED_FUNCTION = delete
-#else
-#define SAL_DELETED_FUNCTION
-#endif
-
-/** C++11 "override" feature.
-
- With HAVE_CXX11_OVERRIDE, force the method to override a existing method in
- parent, error out if the method with the correct signature does not exist.
-
- @since LibreOffice 4.1
-*/
-#if HAVE_CXX11_OVERRIDE
-#define SAL_OVERRIDE override
-#else
-#define SAL_OVERRIDE
-#endif
-
-/** C++11 "final" feature.
-
- With HAVE_CXX11_FINAL, mark a class as non-derivable or a method as non-overridable.
-
- @since LibreOffice 4.1
-*/
-#if HAVE_CXX11_FINAL
-#define SAL_FINAL final
-#else
-#define SAL_FINAL
-#endif
-
-#endif /* __cplusplus */
-
-#ifdef __cplusplus
-
-namespace sal {
-
-/**
- A static_cast between integral types, to avoid C++ compiler warnings.
-
- In C++ source code, use sal::static_int_cast<T>(n) instead of
- static_cast<T>(n) whenever a compiler warning about integral type problems
- shall be silenced. That way, source code that needs to be modified when the
- type of any of the expressions involved in the compiler warning is changed
- can be found more easily.
-
- Both template arguments T1 and T2 must be integral types.
-*/
-template< typename T1, typename T2 > inline T1 static_int_cast(T2 n) {
- return static_cast< T1 >(n);
-}
-
-}
-
-#else /* __cplusplus */
-
-/**
- A cast between integer types, to avoid C compiler warnings.
-
- In C source code, use SAL_INT_CAST(type, expr) instead of ((type) (expr))
- whenever a compiler warning about integer type problems shall be silenced.
- That way, source code that needs to be modified when the type of any of the
- expressions involved in the compiler warning is changed can be found more
- easily.
-
- The argument 'type' must be an integer type and the argument 'expr' must be
- an integer expression. Both arguments are evaluated exactly once.
-*/
-#define SAL_INT_CAST(type, expr) ((type) (expr))
-
-#endif /* __cplusplus */
-
-/**
- Use as follows:
- SAL_DEPRECATED("Dont use, its evil.") void doit(int nPara);
-*/
-
-#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
-# define SAL_DEPRECATED(message) __attribute__((deprecated(message)))
-#elif (__GNUC__)
-# define SAL_DEPRECATED(message) __attribute__((deprecated))
-#elif defined(_MSC_VER)
-# define SAL_DEPRECATED(message) __declspec(deprecated(message))
-#else
-# define SAL_DEPRECATED(message)
-#endif
-
-/**
- This macro is used to tag interfaces that are deprecated for both
- internal and external API users, but where we are still writing
- out the internal usage. Ultimately these should be replaced by
- SAL_DEPRECATED, and then removed.
-
- Use as follows:
- SAL_DEPRECATED_INTERNAL("Dont use, its evil.") void doit(int nPara);
- */
-#ifdef LIBO_INTERNAL_ONLY
-# define SAL_DEPRECATED_INTERNAL(message)
-#else
-# define SAL_DEPRECATED_INTERNAL(message) SAL_DEPRECATED(message)
-#endif
-
-/**
- Use as follows:
- SAL_WNODEPRECATED_DECLARATIONS_PUSH
- \::std::auto_ptr<X> ...
- SAL_WNODEPRECATED_DECLARATIONS_POP
-*/
-
-#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) || defined(__clang__)
-#define SAL_WNODEPRECATED_DECLARATIONS_PUSH \
- _Pragma(SAL_STRINGIFY_ARG(GCC diagnostic push)) \
- _Pragma(SAL_STRINGIFY_ARG(GCC diagnostic ignored "-Wdeprecated-declarations"))
-#define SAL_WNODEPRECATED_DECLARATIONS_POP \
- _Pragma(SAL_STRINGIFY_ARG(GCC diagnostic pop))
-#else
-# define SAL_WNODEPRECATED_DECLARATIONS_PUSH
-# define SAL_WNODEPRECATED_DECLARATIONS_POP
-#endif
-
-/** Annotate unused but required C++ function parameters.
-
- An unused parameter is required if the function needs to adhere to a given
- type (e.g., if its address is assigned to a function pointer of a specific
- type, or if it is called from template code). This annotation helps static
- analysis tools suppress false warnings. In the case of virtual functions
- (where unused required parameters are common, too), the annotation is not
- required (as static analysis tools can themselves derive the information
- whether a function is virtual).
-
- Use the annotation in function definitions like
-
- void f(SAL_UNUSED_PARAMETER int) {}
-
- C does not allow unnamed parameters, anyway, so a function definition like
- the above needs to be written there as
-
- void f(int dummy) { (void) dummy; / * avoid warnings * / }
-
- without a SAL_UNUSED_PARAMETER annotation.
-
- @since LibreOffice 3.6
- */
-#if defined __cplusplus
-#if defined __GNUC__
-#define SAL_UNUSED_PARAMETER __attribute__ ((unused))
-#else
-#define SAL_UNUSED_PARAMETER
-#endif
-#endif
-
-/**
-
- Annotate classes where a compiler should warn if an instance is unused.
-
- The compiler cannot warn about unused instances if they have non-trivial
- or external constructors or destructors. Classes marked with SAL_WARN_UNUSED
- will be warned about.
-
- Currently implemented by a Clang compiler plugin.
-
- @since LibreOffice 4.0
-
-*/
-
-#if defined __clang__
-#define SAL_WARN_UNUSED __attribute__((annotate("lo_warn_unused")))
-#else
-#define SAL_WARN_UNUSED
-#endif
-
-#endif /*_SAL_TYPES_H_ */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/systools/win32/snprintf.h b/sal/inc/systools/win32/snprintf.h
deleted file mode 100644
index e5e60eaa9ada..000000000000
--- a/sal/inc/systools/win32/snprintf.h
+++ /dev/null
@@ -1,88 +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 _SNPRINTF_H
-#define _SNPRINTF_H
-
-#if !defined(_WIN32)
-#error ERROR: Only Win32 target supported!
-#endif
-
-/* Macros for Unicode/ANSI support like in TCHAR.H */
-
-#ifdef _UNICODE
-#define sntprintf snwprintf
-#define vsntprintf vsnwprintf
-#else
-#define sntprintf snprintf
-#define vsntprintf vsnprintf
-#endif
-
-/* Define needed types if they are not yet defined */
-
-
-# ifndef _VA_LIST_DEFINED
- typedef char * va_list;
-# define _VA_LIST_DEFINED
-# endif
-
-
-# ifndef _WCHAR_T_DEFINED
- typedef unsigned short wchar_t;
-# define _WCHAR_T_DEFINED
-# endif
-
-
-#ifndef _SNPRINTF_DLLIMPORT
-#define _SNPRINTF_DLLIMPORT __declspec( dllimport )
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Implementations of snprintf following the ISO/IEC 9899:1999 (ISO C99)
- standard.
- The difference compared to _snprintf is that the buffer always is zero
- terminated (unless count is zero) and the return value is the number of
- characters (not including terminating zero) that would have been written
- even if the buffer wasn't large
- enough to hold the string. */
-
-
-#if !defined(__MINGW32__) || defined (__NO_ISOCEXT)
-
-/* UNICODE version */
-_SNPRINTF_DLLIMPORT int __cdecl snwprintf( wchar_t *buffer, size_t count, const wchar_t *format, ... );
-
-/* SBCS and MBCS version */
-_SNPRINTF_DLLIMPORT int __cdecl snprintf( char *buffer, size_t count, const char *format, ... );
-
-#endif
-
-/* Conflict with STL_port inline implementation */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SNPRINTF_H */
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */