Coverage Report

Created: 2026-05-16 09:25

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/include/rtl/byteseq.hxx
Line
Count
Source
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/*
3
 * This file is part of the LibreOffice project.
4
 *
5
 * This Source Code Form is subject to the terms of the Mozilla Public
6
 * License, v. 2.0. If a copy of the MPL was not distributed with this
7
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
 *
9
 * This file incorporates work covered by the following license notice:
10
 *
11
 *   Licensed to the Apache Software Foundation (ASF) under one or more
12
 *   contributor license agreements. See the NOTICE file distributed
13
 *   with this work for additional information regarding copyright
14
 *   ownership. The ASF licenses this file to you under the Apache
15
 *   License, Version 2.0 (the "License"); you may not use this file
16
 *   except in compliance with the License. You may obtain a copy of
17
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
18
 */
19
20
/*
21
 * This file is part of LibreOffice published API.
22
 */
23
#ifndef INCLUDED_RTL_BYTESEQ_HXX
24
#define INCLUDED_RTL_BYTESEQ_HXX
25
26
#include "rtl/byteseq.h"
27
28
#include <cstddef>
29
#include <new>
30
31
namespace rtl
32
{
33
34
35
inline ByteSequence::ByteSequence()
36
108
    : _pSequence( NULL )
37
108
{
38
108
    ::rtl_byte_sequence_construct( &_pSequence, 0 );
39
108
}
40
41
inline ByteSequence::ByteSequence( const ByteSequence & rSeq )
42
0
    : _pSequence( NULL )
43
0
{
44
0
    ::rtl_byte_sequence_assign( &_pSequence, rSeq._pSequence );
45
0
}
46
47
#if defined LIBO_INTERNAL_ONLY
48
inline ByteSequence::ByteSequence( ByteSequence && rSeq ) noexcept
49
    : _pSequence(rSeq._pSequence)
50
{
51
    rSeq._pSequence = nullptr;
52
}
53
#endif
54
55
inline ByteSequence::ByteSequence( sal_Sequence *pSequence)
56
    : _pSequence( pSequence )
57
{
58
    ::rtl_byte_sequence_acquire( pSequence );
59
}
60
61
inline ByteSequence::ByteSequence( const sal_Int8 * pElements, sal_Int32 len )
62
0
    : _pSequence( NULL )
63
0
{
64
0
    ::rtl_byte_sequence_constructFromArray( &_pSequence, pElements, len );
65
0
    if (_pSequence == NULL)
66
0
        throw ::std::bad_alloc();
67
0
}
68
69
inline ByteSequence::ByteSequence( sal_Int32 len, enum __ByteSequence_NoDefault )
70
0
    : _pSequence( NULL )
71
0
{
72
0
    ::rtl_byte_sequence_constructNoDefault( &_pSequence, len );
73
0
    if (_pSequence == NULL)
74
0
        throw ::std::bad_alloc();
75
0
}
76
77
inline ByteSequence::ByteSequence( sal_Sequence *pSequence, enum __ByteSequence_NoAcquire )
78
    : _pSequence( pSequence )
79
{
80
}
81
82
inline ByteSequence::ByteSequence( sal_Int32 len )
83
    : _pSequence( NULL )
84
{
85
    ::rtl_byte_sequence_construct( &_pSequence, len );
86
    if (_pSequence == NULL)
87
        throw ::std::bad_alloc();
88
}
89
90
inline ByteSequence::~ByteSequence()
91
108
{
92
108
    ::rtl_byte_sequence_release( _pSequence );
93
108
}
94
95
inline ByteSequence & ByteSequence::operator = ( const ByteSequence & rSeq )
96
0
{
97
0
    ::rtl_byte_sequence_assign( &_pSequence, rSeq._pSequence );
98
0
    return *this;
99
0
}
100
101
#if defined LIBO_INTERNAL_ONLY
102
inline ByteSequence & ByteSequence::operator = ( ByteSequence && rSeq ) noexcept
103
0
{
104
0
    ::rtl_byte_sequence_release(_pSequence);
105
0
    _pSequence = rSeq._pSequence;
106
0
    rSeq._pSequence = nullptr;
107
0
    return *this;
108
0
}
109
#endif
110
111
inline bool ByteSequence::operator == ( const ByteSequence & rSeq ) const
112
0
{
113
0
    return ::rtl_byte_sequence_equals( _pSequence, rSeq._pSequence );
114
0
}
115
116
inline sal_Int8 * ByteSequence::getArray()
117
0
{
118
0
    ::rtl_byte_sequence_reference2One( &_pSequence );
119
0
    if (_pSequence == NULL)
120
0
        throw ::std::bad_alloc();
121
0
    return reinterpret_cast<sal_Int8 *>(_pSequence->elements);
122
0
}
123
124
inline void ByteSequence::realloc( sal_Int32 nSize )
125
0
{
126
0
    ::rtl_byte_sequence_realloc( &_pSequence, nSize );
127
0
    if (_pSequence == NULL)
128
0
        throw ::std::bad_alloc();
129
0
}
130
131
inline sal_Int8 & ByteSequence::operator [] ( sal_Int32 nIndex )
132
0
{
133
0
    return getArray()[ nIndex ];
134
0
}
135
136
inline bool ByteSequence::operator != ( const ByteSequence & rSeq ) const
137
0
{
138
0
    return (! operator == ( rSeq ));
139
0
}
140
141
}
142
#endif
143
144
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */