Coverage Report

Created: 2026-09-28 10:59

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/include/o3tl/enumrange.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
#ifndef INCLUDED_O3TL_ENUMRANGE_HXX
21
#define INCLUDED_O3TL_ENUMRANGE_HXX
22
23
namespace o3tl {
24
25
///
26
/// This is a container convenience class iterating over scoped enumerations.
27
///
28
/// This assumes that the 'enum class' definition
29
///  - starts at zero
30
///  - has no holes in its sequence of values
31
///  - defines a value called LAST which refers to the greatest constant.
32
///
33
///  Use like this:
34
///     enum class COLOR { RED, GREEN, BLUE, LAST=BLUE };
35
///     for( auto e : o3tl::enumrange<Color>() )
36
///        ....;
37
///
38
/// \param T the 'enum class' type.
39
template< typename T>
40
class enumrange
41
{
42
public:
43
    class Iterator
44
    {
45
    public:
46
        Iterator( int value ) :
47
280k
            m_value( value )
48
280k
        {
49
280k
        }
Unexecuted instantiation: o3tl::enumrange<VclPackType>::Iterator::Iterator(int)
Unexecuted instantiation: hdrcont.cxx:o3tl::enumrange<(anonymous namespace)::HeaderPaintPass>::Iterator::Iterator(int)
o3tl::enumrange<model::ThemeColorType>::Iterator::Iterator(int)
Line
Count
Source
47
90
            m_value( value )
48
90
        {
49
90
        }
o3tl::enumrange<SvxBoxItemLine>::Iterator::Iterator(int)
Line
Count
Source
47
2.04k
            m_value( value )
48
2.04k
        {
49
2.04k
        }
o3tl::enumrange<TSS_Type>::Iterator::Iterator(int)
Line
Count
Source
47
54.6k
            m_value( value )
48
54.6k
        {
49
54.6k
        }
Unexecuted instantiation: o3tl::enumrange<LockFileComponent>::Iterator::Iterator(int)
o3tl::enumrange<XPropertyListType>::Iterator::Iterator(int)
Line
Count
Source
47
219k
            m_value( value )
48
219k
        {
49
219k
        }
o3tl::enumrange<GlobalEventId>::Iterator::Iterator(int)
Line
Count
Source
47
10
            m_value( value )
48
10
        {
49
10
        }
Unexecuted instantiation: o3tl::enumrange<vcl::ImageType>::Iterator::Iterator(int)
Unexecuted instantiation: o3tl::enumrange<SwFieldGroup>::Iterator::Iterator(int)
o3tl::enumrange<SwFieldTypesEnum>::Iterator::Iterator(int)
Line
Count
Source
47
2
            m_value( value )
48
2
        {
49
2
        }
Unexecuted instantiation: o3tl::enumrange<ContentTypeId>::Iterator::Iterator(int)
o3tl::enumrange<writerfilter::dmapper::BorderHandler::BorderPosition>::Iterator::Iterator(int)
Line
Count
Source
47
4.22k
            m_value( value )
48
4.22k
        {
49
4.22k
        }
Unexecuted instantiation: o3tl::enumrange<sd::ToolBarManager::ToolBarGroup>::Iterator::Iterator(int)
50
51
        T operator*( void ) const
52
1.03M
        {
53
1.03M
            return static_cast<T>(m_value);
54
1.03M
        }
Unexecuted instantiation: o3tl::enumrange<VclPackType>::Iterator::operator*() const
Unexecuted instantiation: hdrcont.cxx:o3tl::enumrange<(anonymous namespace)::HeaderPaintPass>::Iterator::operator*() const
o3tl::enumrange<model::ThemeColorType>::Iterator::operator*() const
Line
Count
Source
52
540
        {
53
540
            return static_cast<T>(m_value);
54
540
        }
o3tl::enumrange<SvxBoxItemLine>::Iterator::operator*() const
Line
Count
Source
52
4.08k
        {
53
4.08k
            return static_cast<T>(m_value);
54
4.08k
        }
o3tl::enumrange<TSS_Type>::Iterator::operator*() const
Line
Count
Source
52
246k
        {
53
246k
            return static_cast<T>(m_value);
54
246k
        }
Unexecuted instantiation: o3tl::enumrange<LockFileComponent>::Iterator::operator*() const
o3tl::enumrange<XPropertyListType>::Iterator::operator*() const
Line
Count
Source
52
767k
        {
53
767k
            return static_cast<T>(m_value);
54
767k
        }
o3tl::enumrange<GlobalEventId>::Iterator::operator*() const
Line
Count
Source
52
140
        {
53
140
            return static_cast<T>(m_value);
54
140
        }
Unexecuted instantiation: o3tl::enumrange<vcl::ImageType>::Iterator::operator*() const
Unexecuted instantiation: o3tl::enumrange<SwFieldGroup>::Iterator::operator*() const
o3tl::enumrange<SwFieldTypesEnum>::Iterator::operator*() const
Line
Count
Source
52
45
        {
53
45
            return static_cast<T>(m_value);
54
45
        }
Unexecuted instantiation: o3tl::enumrange<ContentTypeId>::Iterator::operator*() const
o3tl::enumrange<writerfilter::dmapper::BorderHandler::BorderPosition>::Iterator::operator*() const
Line
Count
Source
52
12.6k
        {
53
12.6k
            return static_cast<T>(m_value);
54
12.6k
        }
Unexecuted instantiation: o3tl::enumrange<sd::ToolBarManager::ToolBarGroup>::Iterator::operator*() const
55
56
        void operator++( void )
57
1.03M
        {
58
1.03M
            ++m_value;
59
1.03M
        }
Unexecuted instantiation: o3tl::enumrange<VclPackType>::Iterator::operator++()
Unexecuted instantiation: hdrcont.cxx:o3tl::enumrange<(anonymous namespace)::HeaderPaintPass>::Iterator::operator++()
o3tl::enumrange<model::ThemeColorType>::Iterator::operator++()
Line
Count
Source
57
540
        {
58
540
            ++m_value;
59
540
        }
o3tl::enumrange<SvxBoxItemLine>::Iterator::operator++()
Line
Count
Source
57
4.08k
        {
58
4.08k
            ++m_value;
59
4.08k
        }
o3tl::enumrange<TSS_Type>::Iterator::operator++()
Line
Count
Source
57
246k
        {
58
246k
            ++m_value;
59
246k
        }
Unexecuted instantiation: o3tl::enumrange<LockFileComponent>::Iterator::operator++()
o3tl::enumrange<XPropertyListType>::Iterator::operator++()
Line
Count
Source
57
767k
        {
58
767k
            ++m_value;
59
767k
        }
o3tl::enumrange<GlobalEventId>::Iterator::operator++()
Line
Count
Source
57
140
        {
58
140
            ++m_value;
59
140
        }
Unexecuted instantiation: o3tl::enumrange<vcl::ImageType>::Iterator::operator++()
Unexecuted instantiation: o3tl::enumrange<SwFieldGroup>::Iterator::operator++()
o3tl::enumrange<SwFieldTypesEnum>::Iterator::operator++()
Line
Count
Source
57
45
        {
58
45
            ++m_value;
59
45
        }
Unexecuted instantiation: o3tl::enumrange<ContentTypeId>::Iterator::operator++()
o3tl::enumrange<writerfilter::dmapper::BorderHandler::BorderPosition>::Iterator::operator++()
Line
Count
Source
57
12.6k
        {
58
12.6k
            ++m_value;
59
12.6k
        }
Unexecuted instantiation: o3tl::enumrange<sd::ToolBarManager::ToolBarGroup>::Iterator::operator++()
60
61
        bool operator!=( Iterator rhs ) const
62
1.17M
        {
63
1.17M
            return m_value != rhs.m_value;
64
1.17M
        }
Unexecuted instantiation: o3tl::enumrange<VclPackType>::Iterator::operator!=(o3tl::enumrange<VclPackType>::Iterator) const
Unexecuted instantiation: hdrcont.cxx:o3tl::enumrange<(anonymous namespace)::HeaderPaintPass>::Iterator::operator!=(o3tl::enumrange<(anonymous namespace)::HeaderPaintPass>::Iterator) const
o3tl::enumrange<model::ThemeColorType>::Iterator::operator!=(o3tl::enumrange<model::ThemeColorType>::Iterator) const
Line
Count
Source
62
585
        {
63
585
            return m_value != rhs.m_value;
64
585
        }
o3tl::enumrange<SvxBoxItemLine>::Iterator::operator!=(o3tl::enumrange<SvxBoxItemLine>::Iterator) const
Line
Count
Source
62
5.11k
        {
63
5.11k
            return m_value != rhs.m_value;
64
5.11k
        }
o3tl::enumrange<TSS_Type>::Iterator::operator!=(o3tl::enumrange<TSS_Type>::Iterator) const
Line
Count
Source
62
273k
        {
63
273k
            return m_value != rhs.m_value;
64
273k
        }
Unexecuted instantiation: o3tl::enumrange<LockFileComponent>::Iterator::operator!=(o3tl::enumrange<LockFileComponent>::Iterator) const
o3tl::enumrange<XPropertyListType>::Iterator::operator!=(o3tl::enumrange<XPropertyListType>::Iterator) const
Line
Count
Source
62
876k
        {
63
876k
            return m_value != rhs.m_value;
64
876k
        }
o3tl::enumrange<GlobalEventId>::Iterator::operator!=(o3tl::enumrange<GlobalEventId>::Iterator) const
Line
Count
Source
62
145
        {
63
145
            return m_value != rhs.m_value;
64
145
        }
Unexecuted instantiation: o3tl::enumrange<vcl::ImageType>::Iterator::operator!=(o3tl::enumrange<vcl::ImageType>::Iterator) const
Unexecuted instantiation: o3tl::enumrange<SwFieldGroup>::Iterator::operator!=(o3tl::enumrange<SwFieldGroup>::Iterator) const
o3tl::enumrange<SwFieldTypesEnum>::Iterator::operator!=(o3tl::enumrange<SwFieldTypesEnum>::Iterator) const
Line
Count
Source
62
46
        {
63
46
            return m_value != rhs.m_value;
64
46
        }
Unexecuted instantiation: o3tl::enumrange<ContentTypeId>::Iterator::operator!=(o3tl::enumrange<ContentTypeId>::Iterator) const
o3tl::enumrange<writerfilter::dmapper::BorderHandler::BorderPosition>::Iterator::operator!=(o3tl::enumrange<writerfilter::dmapper::BorderHandler::BorderPosition>::Iterator) const
Line
Count
Source
62
14.7k
        {
63
14.7k
            return m_value != rhs.m_value;
64
14.7k
        }
Unexecuted instantiation: o3tl::enumrange<sd::ToolBarManager::ToolBarGroup>::Iterator::operator!=(o3tl::enumrange<sd::ToolBarManager::ToolBarGroup>::Iterator) const
65
66
    private:
67
        int m_value;
68
   };
69
};
70
71
template< typename T >
72
typename enumrange<T>::Iterator begin( enumrange<T> )
73
140k
{
74
140k
    return typename enumrange<T>::Iterator( int(0) );
75
140k
}
Unexecuted instantiation: o3tl::enumrange<VclPackType>::Iterator o3tl::begin<VclPackType>(o3tl::enumrange<VclPackType>)
Unexecuted instantiation: hdrcont.cxx:o3tl::enumrange<(anonymous namespace)::HeaderPaintPass>::Iterator o3tl::begin<(anonymous namespace)::HeaderPaintPass>(o3tl::enumrange<(anonymous namespace)::HeaderPaintPass>)
o3tl::enumrange<model::ThemeColorType>::Iterator o3tl::begin<model::ThemeColorType>(o3tl::enumrange<model::ThemeColorType>)
Line
Count
Source
73
45
{
74
45
    return typename enumrange<T>::Iterator( int(0) );
75
45
}
o3tl::enumrange<SvxBoxItemLine>::Iterator o3tl::begin<SvxBoxItemLine>(o3tl::enumrange<SvxBoxItemLine>)
Line
Count
Source
73
1.02k
{
74
1.02k
    return typename enumrange<T>::Iterator( int(0) );
75
1.02k
}
o3tl::enumrange<TSS_Type>::Iterator o3tl::begin<TSS_Type>(o3tl::enumrange<TSS_Type>)
Line
Count
Source
73
27.3k
{
74
27.3k
    return typename enumrange<T>::Iterator( int(0) );
75
27.3k
}
Unexecuted instantiation: o3tl::enumrange<LockFileComponent>::Iterator o3tl::begin<LockFileComponent>(o3tl::enumrange<LockFileComponent>)
o3tl::enumrange<XPropertyListType>::Iterator o3tl::begin<XPropertyListType>(o3tl::enumrange<XPropertyListType>)
Line
Count
Source
73
109k
{
74
109k
    return typename enumrange<T>::Iterator( int(0) );
75
109k
}
o3tl::enumrange<GlobalEventId>::Iterator o3tl::begin<GlobalEventId>(o3tl::enumrange<GlobalEventId>)
Line
Count
Source
73
5
{
74
5
    return typename enumrange<T>::Iterator( int(0) );
75
5
}
Unexecuted instantiation: o3tl::enumrange<vcl::ImageType>::Iterator o3tl::begin<vcl::ImageType>(o3tl::enumrange<vcl::ImageType>)
Unexecuted instantiation: o3tl::enumrange<SwFieldGroup>::Iterator o3tl::begin<SwFieldGroup>(o3tl::enumrange<SwFieldGroup>)
o3tl::enumrange<SwFieldTypesEnum>::Iterator o3tl::begin<SwFieldTypesEnum>(o3tl::enumrange<SwFieldTypesEnum>)
Line
Count
Source
73
1
{
74
1
    return typename enumrange<T>::Iterator( int(0) );
75
1
}
Unexecuted instantiation: o3tl::enumrange<ContentTypeId>::Iterator o3tl::begin<ContentTypeId>(o3tl::enumrange<ContentTypeId>)
o3tl::enumrange<writerfilter::dmapper::BorderHandler::BorderPosition>::Iterator o3tl::begin<writerfilter::dmapper::BorderHandler::BorderPosition>(o3tl::enumrange<writerfilter::dmapper::BorderHandler::BorderPosition>)
Line
Count
Source
73
2.11k
{
74
2.11k
    return typename enumrange<T>::Iterator( int(0) );
75
2.11k
}
Unexecuted instantiation: o3tl::enumrange<sd::ToolBarManager::ToolBarGroup>::Iterator o3tl::begin<sd::ToolBarManager::ToolBarGroup>(o3tl::enumrange<sd::ToolBarManager::ToolBarGroup>)
76
77
template< typename T >
78
typename enumrange<T>::Iterator end( enumrange<T> )
79
140k
{
80
140k
    return typename enumrange<T>::Iterator( static_cast<int>(T::LAST) + 1 );
81
140k
}
Unexecuted instantiation: o3tl::enumrange<VclPackType>::Iterator o3tl::end<VclPackType>(o3tl::enumrange<VclPackType>)
Unexecuted instantiation: hdrcont.cxx:o3tl::enumrange<(anonymous namespace)::HeaderPaintPass>::Iterator o3tl::end<(anonymous namespace)::HeaderPaintPass>(o3tl::enumrange<(anonymous namespace)::HeaderPaintPass>)
o3tl::enumrange<model::ThemeColorType>::Iterator o3tl::end<model::ThemeColorType>(o3tl::enumrange<model::ThemeColorType>)
Line
Count
Source
79
45
{
80
45
    return typename enumrange<T>::Iterator( static_cast<int>(T::LAST) + 1 );
81
45
}
o3tl::enumrange<SvxBoxItemLine>::Iterator o3tl::end<SvxBoxItemLine>(o3tl::enumrange<SvxBoxItemLine>)
Line
Count
Source
79
1.02k
{
80
1.02k
    return typename enumrange<T>::Iterator( static_cast<int>(T::LAST) + 1 );
81
1.02k
}
o3tl::enumrange<TSS_Type>::Iterator o3tl::end<TSS_Type>(o3tl::enumrange<TSS_Type>)
Line
Count
Source
79
27.3k
{
80
27.3k
    return typename enumrange<T>::Iterator( static_cast<int>(T::LAST) + 1 );
81
27.3k
}
Unexecuted instantiation: o3tl::enumrange<LockFileComponent>::Iterator o3tl::end<LockFileComponent>(o3tl::enumrange<LockFileComponent>)
o3tl::enumrange<XPropertyListType>::Iterator o3tl::end<XPropertyListType>(o3tl::enumrange<XPropertyListType>)
Line
Count
Source
79
109k
{
80
109k
    return typename enumrange<T>::Iterator( static_cast<int>(T::LAST) + 1 );
81
109k
}
o3tl::enumrange<GlobalEventId>::Iterator o3tl::end<GlobalEventId>(o3tl::enumrange<GlobalEventId>)
Line
Count
Source
79
5
{
80
5
    return typename enumrange<T>::Iterator( static_cast<int>(T::LAST) + 1 );
81
5
}
Unexecuted instantiation: o3tl::enumrange<vcl::ImageType>::Iterator o3tl::end<vcl::ImageType>(o3tl::enumrange<vcl::ImageType>)
Unexecuted instantiation: o3tl::enumrange<SwFieldGroup>::Iterator o3tl::end<SwFieldGroup>(o3tl::enumrange<SwFieldGroup>)
o3tl::enumrange<SwFieldTypesEnum>::Iterator o3tl::end<SwFieldTypesEnum>(o3tl::enumrange<SwFieldTypesEnum>)
Line
Count
Source
79
1
{
80
1
    return typename enumrange<T>::Iterator( static_cast<int>(T::LAST) + 1 );
81
1
}
Unexecuted instantiation: o3tl::enumrange<ContentTypeId>::Iterator o3tl::end<ContentTypeId>(o3tl::enumrange<ContentTypeId>)
o3tl::enumrange<writerfilter::dmapper::BorderHandler::BorderPosition>::Iterator o3tl::end<writerfilter::dmapper::BorderHandler::BorderPosition>(o3tl::enumrange<writerfilter::dmapper::BorderHandler::BorderPosition>)
Line
Count
Source
79
2.11k
{
80
2.11k
    return typename enumrange<T>::Iterator( static_cast<int>(T::LAST) + 1 );
81
2.11k
}
Unexecuted instantiation: o3tl::enumrange<sd::ToolBarManager::ToolBarGroup>::Iterator o3tl::end<sd::ToolBarManager::ToolBarGroup>(o3tl::enumrange<sd::ToolBarManager::ToolBarGroup>)
82
83
}; // namespace o3tl
84
85
#endif /* INCLUDED_O3TL_ENUMRANGE_HXX */
86
87
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */