LibreOffice: sal/types.h File Reference

LibreOffice LibreOffice 26.2 SDK C/C++ API Reference

Loading...
Searching...
No Matches
types.h File Reference
`#include "sal/config.h"`
`#include <stddef.h>`
`#include "sal/macros.h"`
`#include "sal/typesizes.h"`

Go to the source code of this file.

## Classes
struct | _sal_Sequence
| This is the binary specification of a SAL sequence. More...

## Namespaces
namespace | com
namespace | com::sun
namespace | com::sun::star
namespace | sal

## Macros
#define | sal_False ((sal_Bool)0)
#define | sal_True ((sal_Bool)1)
#define | SAL_UNICODE_NOTEQUAL_WCHAR_T
#define | SAL_PRI_SIZET "z"
#define | SAL_PRI_PTRDIFFT "t"
#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))
#define | SAL_MAX_ENUM 0x7fffffff
#define | SAL_EXCEPTION_DLLPUBLIC_EXPORT
| Exporting the symbols necessary for exception handling on GCC.
#define | SAL_EXCEPTION_DLLPRIVATE
#define | SAL_WARN_UNUSED_RESULT
| Use this as markup for functions and methods whose return value must be used.
#define | SAL_NO_VTABLE
| Use this for pure virtual classes, e.g.
#define | SAL_SEQUENCE_HEADER_SIZE ((sal_Size) offsetof(sal_Sequence,elements))
#define | SAL_THROW_EXTERN_C()
| Nothrow specification for C functions.
#define | COVERITY_NOEXCEPT_FALSE
| To markup destructors that coverity warns might throw exceptions which won't throw in practice, or where std::terminate is an acceptable response if they do.
#define | SAL_DELETED_FUNCTION
| short-circuit extra-verbose API namespaces
#define | SAL_OVERRIDE
| C++11 "override" feature.
#define | SAL_CONSTEXPR
| C++11 "constexpr" feature.
#define | SAL_NOEXCEPT throw ()
| Macro for C++11 "noexcept" vs.
#define | SAL_DEPRECATED(message)
| Use as follows: SAL_DEPRECATED("Don't use, it's evil.") void doit(int nPara);.
#define | SAL_DEPRECATED_INTERNAL(message)
| This macro is used in cppumaker-generated include files, to tag entities that are marked as.
#define | SAL_WNODEPRECATED_DECLARATIONS_PUSH
| Use as follows: SAL_WNODEPRECATED_DECLARATIONS_PUSH ::std::auto_ptr<X> ... SAL_WNODEPRECATED_DECLARATIONS_POP.
#define | SAL_WNODEPRECATED_DECLARATIONS_POP
#define | SAL_WNOUNREACHABLE_CODE_PUSH
| Use as follows:
#define | SAL_WNOUNREACHABLE_CODE_POP
#define | SAL_UNUSED_PARAMETER
| Annotate unused but required C++ function parameters.
#define | SAL_WARN_UNUSED
| Annotate classes where a compiler should warn if an instance is unused.

## Typedefs
typedef unsigned char | sal_Bool
typedef signed char | sal_Int8
typedef unsigned char | sal_uInt8
typedef sal_uInt16 | sal_Unicode
typedef void * | sal_Handle
typedef struct _sal_Sequence | sal_Sequence
| This is the binary specification of a SAL sequence.

## Enumerations
enum | __sal_NoAcquire { SAL_NO_ACQUIRE }

## Functions
template<typename T1, typename T2>
T1 | sal::static_int_cast (T2 n)
| A static_cast between integral types, to avoid C++ compiler warnings.

## Macro Definition Documentation

## ◆ COVERITY_NOEXCEPT_FALSE

#define COVERITY_NOEXCEPT_FALSE

To markup destructors that coverity warns might throw exceptions which won't throw in practice, or where std::terminate is an acceptable response if they do.

## ◆ SAL_CONSTEXPR

#define SAL_CONSTEXPR

C++11 "constexpr" feature.

For LIBO_INTERNAL_ONLY, declare that it's possible to evaluate the value at compile time.

Since
  LibreOffice 7.2

## ◆ SAL_DELETED_FUNCTION

#define SAL_DELETED_FUNCTION

short-circuit extra-verbose API namespaces

Since
  LibreOffice 4.0 C++11 "= delete" feature.

For LIBO_INTERNAL_ONLY, 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

## ◆ SAL_DEPRECATED

#define SAL_DEPRECATED | ( |  | message | ) |

Use as follows: SAL_DEPRECATED("Don't use, it's evil.") void doit(int nPara);.

## ◆ SAL_DEPRECATED_INTERNAL

#define SAL_DEPRECATED_INTERNAL | ( |  | message | ) |

Value:
SAL_DEPRECATED(message)
SAL_DEPRECATED
#define SAL_DEPRECATED(message)
Use as follows: SAL_DEPRECATED("Don't use, it's evil.") void doit(int nPara);.
Definition types.h:492

This macro is used in cppumaker-generated include files, to tag entities that are marked as.

Deprecated
  in UNOIDL.

It causes deprecation warnings to be generated in external code, but for now is silenced in internal code. It would need some substantial clean-up of internal code to fix all warnings/errors generated by it. (Once that is done, it can become a synonym for SAL_DEPRECATED under LIBO_INTERNAL_ONLY, too. Completely removing the macro then would be incompatible, in case there are include files still around generated with a cppumaker that emitted it.)

## ◆ SAL_EXCEPTION_DLLPRIVATE

#define SAL_EXCEPTION_DLLPRIVATE

## ◆ SAL_EXCEPTION_DLLPUBLIC_EXPORT

#define SAL_EXCEPTION_DLLPUBLIC_EXPORT

Exporting the symbols necessary for exception handling on GCC.

These macros are used for inline declarations of exception classes, as in rtl/malformeduriexception.hxx.

## ◆ sal_False

#define sal_False ((sal_Bool)0)

## ◆ SAL_MAX_ENUM

#define SAL_MAX_ENUM 0x7fffffff

## ◆ SAL_MAX_INT16

#define SAL_MAX_INT16 ((sal_Int16) 0x7FFF)

## ◆ SAL_MAX_INT32

#define SAL_MAX_INT32 ((sal_Int32) 0x7FFFFFFF)

## ◆ SAL_MAX_INT64

#define SAL_MAX_INT64 ((sal_Int64) SAL_CONST_INT64(0x7FFFFFFFFFFFFFFF))

## ◆ SAL_MAX_INT8

#define SAL_MAX_INT8 ((sal_Int8) 0x7F)

## ◆ SAL_MAX_UINT16

#define SAL_MAX_UINT16 ((sal_uInt16) 0xFFFF)

## ◆ SAL_MAX_UINT32

#define SAL_MAX_UINT32 ((sal_uInt32) 0xFFFFFFFF)

## ◆ SAL_MAX_UINT64

#define SAL_MAX_UINT64 ((sal_uInt64) SAL_CONST_UINT64(0xFFFFFFFFFFFFFFFF))

## ◆ SAL_MAX_UINT8

#define SAL_MAX_UINT8 ((sal_uInt8) 0xFF)

## ◆ SAL_MIN_INT16

#define SAL_MIN_INT16 ((sal_Int16) (-0x7FFF - 1))

## ◆ SAL_MIN_INT32

#define SAL_MIN_INT32 ((sal_Int32) (-0x7FFFFFFF - 1))

## ◆ SAL_MIN_INT64

#define SAL_MIN_INT64 ((sal_Int64) (SAL_CONST_INT64(-0x7FFFFFFFFFFFFFFF) - 1))

## ◆ SAL_MIN_INT8

#define SAL_MIN_INT8 ((sal_Int8) (-0x7F - 1))

## ◆ SAL_NO_VTABLE

#define SAL_NO_VTABLE

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.

## ◆ SAL_NOEXCEPT

#define SAL_NOEXCEPT throw ()

Macro for C++11 "noexcept" vs.

"throw ()" exception specification.

The latter has been removed completely from C++20.

Since
  LibreOffice 7.2

## ◆ SAL_OVERRIDE

#define SAL_OVERRIDE

C++11 "override" feature.

For LIBO_INTERNAL_ONLY, force the method to override an existing method in parent, error out if the method with the correct signature does not exist.

Since
  LibreOffice 4.1

## ◆ SAL_PRI_PTRDIFFT

#define SAL_PRI_PTRDIFFT "t"

## ◆ SAL_PRI_SIZET

#define SAL_PRI_SIZET "z"

## ◆ SAL_SEQUENCE_HEADER_SIZE

#define SAL_SEQUENCE_HEADER_SIZE ((sal_Size) offsetof(sal_Sequence,elements))

## ◆ SAL_THROW_EXTERN_C

#define SAL_THROW_EXTERN_C | ( |  | ) |

Value:
throw ()

Nothrow specification for C functions.

This is a macro so it can expand to nothing in C code.

## ◆ sal_True

#define sal_True ((sal_Bool)1)

## ◆ SAL_UNICODE_NOTEQUAL_WCHAR_T

#define SAL_UNICODE_NOTEQUAL_WCHAR_T

## ◆ SAL_UNUSED_PARAMETER

#define SAL_UNUSED_PARAMETER

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

## ◆ SAL_WARN_UNUSED

#define SAL_WARN_UNUSED

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.

Since
  LibreOffice 4.0

## ◆ SAL_WARN_UNUSED_RESULT

#define SAL_WARN_UNUSED_RESULT

Use this as markup for functions and methods whose return value must be used.

Compilers that support a construct of this nature will emit a compile time warning on unused return value.

## ◆ SAL_WNODEPRECATED_DECLARATIONS_POP

#define SAL_WNODEPRECATED_DECLARATIONS_POP

## ◆ SAL_WNODEPRECATED_DECLARATIONS_PUSH

#define SAL_WNODEPRECATED_DECLARATIONS_PUSH

Use as follows: SAL_WNODEPRECATED_DECLARATIONS_PUSH ::std::auto_ptr<X> ... SAL_WNODEPRECATED_DECLARATIONS_POP.

## ◆ SAL_WNOUNREACHABLE_CODE_POP

#define SAL_WNOUNREACHABLE_CODE_POP

## ◆ SAL_WNOUNREACHABLE_CODE_PUSH

#define SAL_WNOUNREACHABLE_CODE_PUSH

Use as follows:

SAL_WNOUNREACHABLE_CODE_PUSH

function definition

SAL_WNOUNREACHABLE_CODE_POP

Useful in cases where the compiler is "too clever" like when doing link-time code generation, and noticing that a called function always throws, and fixing the problem cleanly so that it produces no warnings in normal non-LTO compilations either is not easy.

## Typedef Documentation

## ◆ sal_Bool

typedef unsigned char sal_Bool

## ◆ sal_Handle

typedef void* sal_Handle

## ◆ sal_Int8

typedef signed char sal_Int8

## ◆ sal_Sequence

typedef struct _sal_Sequence sal_Sequence

This is the binary specification of a SAL sequence.

## ◆ sal_uInt8

typedef unsigned char sal_uInt8

## ◆ sal_Unicode

typedef sal_uInt16 sal_Unicode

## Enumeration Type Documentation

## ◆ __sal_NoAcquire

enum __sal_NoAcquire

Enumerator
SAL_NO_ACQUIRE | definition of a no acquire enum for ctors