Coverage Report

Created: 2026-02-16 07:47

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/serenity/AK/TemporaryChange.h
Line
Count
Source
1
/*
2
 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
3
 *
4
 * SPDX-License-Identifier: BSD-2-Clause
5
 */
6
7
#pragma once
8
9
#include <AK/Platform.h>
10
#include <AK/StdLibExtras.h>
11
12
namespace AK {
13
14
template<typename T>
15
class TemporaryChange {
16
public:
17
    TemporaryChange(T& variable, T value)
18
66.2M
        : m_variable(variable)
19
65.9M
        , m_old_value(move(variable))
20
66.2M
    {
21
66.2M
        m_variable = move(value);
22
66.2M
    }
AK::TemporaryChange<bool>::TemporaryChange(bool&, bool)
Line
Count
Source
18
65.8M
        : m_variable(variable)
19
65.8M
        , m_old_value(move(variable))
20
65.8M
    {
21
65.8M
        m_variable = move(value);
22
65.8M
    }
AK::TemporaryChange<AK::StringView>::TemporaryChange(AK::StringView&, AK::StringView)
Line
Count
Source
18
123k
        : m_variable(variable)
19
123k
        , m_old_value(move(variable))
20
123k
    {
21
123k
        m_variable = move(value);
22
123k
    }
AK::TemporaryChange<AK::LineTrackingLexer>::TemporaryChange(AK::LineTrackingLexer&, AK::LineTrackingLexer)
Line
Count
Source
18
123k
        : m_variable(variable)
19
123k
        , m_old_value(move(variable))
20
123k
    {
21
123k
        m_variable = move(value);
22
123k
    }
Unexecuted instantiation: AK::TemporaryChange<AK::Optional<unsigned long&> >::TemporaryChange(AK::Optional<unsigned long&>&, AK::Optional<unsigned long&>)
Unexecuted instantiation: AK::TemporaryChange<JS::GCPtr<JS::Bytecode::Executable> >::TemporaryChange(JS::GCPtr<JS::Bytecode::Executable>&, JS::GCPtr<JS::Bytecode::Executable>)
Unexecuted instantiation: AK::TemporaryChange<AK::Optional<unsigned long> >::TemporaryChange(AK::Optional<unsigned long>&, AK::Optional<unsigned long>)
Unexecuted instantiation: AK::TemporaryChange<JS::GCPtr<JS::Realm> >::TemporaryChange(JS::GCPtr<JS::Realm>&, JS::GCPtr<JS::Realm>)
Unexecuted instantiation: AK::TemporaryChange<JS::GCPtr<JS::Object> >::TemporaryChange(JS::GCPtr<JS::Object>&, JS::GCPtr<JS::Object>)
Unexecuted instantiation: AK::TemporaryChange<JS::GCPtr<JS::DeclarativeEnvironment> >::TemporaryChange(JS::GCPtr<JS::DeclarativeEnvironment>&, JS::GCPtr<JS::DeclarativeEnvironment>)
Unexecuted instantiation: AK::TemporaryChange<JS::ExecutionContext*>::TemporaryChange(JS::ExecutionContext*&, JS::ExecutionContext*)
Unexecuted instantiation: AK::TemporaryChange<AK::Span<JS::Value> >::TemporaryChange(AK::Span<JS::Value>&, AK::Span<JS::Value>)
Unexecuted instantiation: AK::TemporaryChange<JS::Bytecode::Generator::UnwindContext const*>::TemporaryChange(JS::Bytecode::Generator::UnwindContext const*&, JS::Bytecode::Generator::UnwindContext const*)
AK::TemporaryChange<unsigned long>::TemporaryChange(unsigned long&, unsigned long)
Line
Count
Source
18
24.4k
        : m_variable(variable)
19
24.4k
        , m_old_value(move(variable))
20
24.4k
    {
21
24.4k
        m_variable = move(value);
22
24.4k
    }
Unexecuted instantiation: AK::TemporaryChange<AK::Vector<char, 0ul> >::TemporaryChange(AK::Vector<char, 0ul>&, AK::Vector<char, 0ul>)
Unexecuted instantiation: AK::TemporaryChange<Shell::AST::Node const*>::TemporaryChange(Shell::AST::Node const*&, Shell::AST::Node const*)
AK::TemporaryChange<Shell::Posix::State>::TemporaryChange(Shell::Posix::State&, Shell::Posix::State)
Line
Count
Source
18
85.9k
        : m_variable(variable)
19
85.9k
        , m_old_value(move(variable))
20
85.9k
    {
21
85.9k
        m_variable = move(value);
22
85.9k
    }
Unexecuted instantiation: AK::TemporaryChange<AK::ByteString>::TemporaryChange(AK::ByteString&, AK::ByteString)
Unexecuted instantiation: AK::TemporaryChange<AK::Optional<Shell::Shell::SourcePosition> >::TemporaryChange(AK::Optional<Shell::Shell::SourcePosition>&, AK::Optional<Shell::Shell::SourcePosition>)
Unexecuted instantiation: AK::TemporaryChange<Shell::Job*>::TemporaryChange(Shell::Job*&, Shell::Job*)
Unexecuted instantiation: AK::TemporaryChange<AK::Optional<double> >::TemporaryChange(AK::Optional<double>&, AK::Optional<double>)
Unexecuted instantiation: AK::TemporaryChange<AK::Optional<Web::CSSPixels> >::TemporaryChange(AK::Optional<Web::CSSPixels>&, AK::Optional<Web::CSSPixels>)
Unexecuted instantiation: AK::TemporaryChange<AK::COWVector<Wasm::GlobalType> >::TemporaryChange(AK::COWVector<Wasm::GlobalType>&, AK::COWVector<Wasm::GlobalType>)
23
66.2M
    ~TemporaryChange() { m_variable = move(m_old_value); }
AK::TemporaryChange<bool>::~TemporaryChange()
Line
Count
Source
23
65.8M
    ~TemporaryChange() { m_variable = move(m_old_value); }
AK::TemporaryChange<AK::StringView>::~TemporaryChange()
Line
Count
Source
23
123k
    ~TemporaryChange() { m_variable = move(m_old_value); }
AK::TemporaryChange<AK::LineTrackingLexer>::~TemporaryChange()
Line
Count
Source
23
123k
    ~TemporaryChange() { m_variable = move(m_old_value); }
Unexecuted instantiation: AK::TemporaryChange<AK::Optional<unsigned long&> >::~TemporaryChange()
Unexecuted instantiation: AK::TemporaryChange<JS::GCPtr<JS::Bytecode::Executable> >::~TemporaryChange()
Unexecuted instantiation: AK::TemporaryChange<AK::Optional<unsigned long> >::~TemporaryChange()
Unexecuted instantiation: AK::TemporaryChange<JS::GCPtr<JS::Realm> >::~TemporaryChange()
Unexecuted instantiation: AK::TemporaryChange<JS::GCPtr<JS::Object> >::~TemporaryChange()
Unexecuted instantiation: AK::TemporaryChange<JS::GCPtr<JS::DeclarativeEnvironment> >::~TemporaryChange()
Unexecuted instantiation: AK::TemporaryChange<JS::ExecutionContext*>::~TemporaryChange()
Unexecuted instantiation: AK::TemporaryChange<AK::Span<JS::Value> >::~TemporaryChange()
Unexecuted instantiation: AK::TemporaryChange<JS::Bytecode::Generator::UnwindContext const*>::~TemporaryChange()
AK::TemporaryChange<unsigned long>::~TemporaryChange()
Line
Count
Source
23
24.4k
    ~TemporaryChange() { m_variable = move(m_old_value); }
Unexecuted instantiation: AK::TemporaryChange<AK::Vector<char, 0ul> >::~TemporaryChange()
Unexecuted instantiation: AK::TemporaryChange<Shell::AST::Node const*>::~TemporaryChange()
AK::TemporaryChange<Shell::Posix::State>::~TemporaryChange()
Line
Count
Source
23
85.9k
    ~TemporaryChange() { m_variable = move(m_old_value); }
Unexecuted instantiation: AK::TemporaryChange<AK::ByteString>::~TemporaryChange()
Unexecuted instantiation: AK::TemporaryChange<AK::Optional<Shell::Shell::SourcePosition> >::~TemporaryChange()
Unexecuted instantiation: AK::TemporaryChange<Shell::Job*>::~TemporaryChange()
Unexecuted instantiation: AK::TemporaryChange<AK::Optional<double> >::~TemporaryChange()
Unexecuted instantiation: AK::TemporaryChange<AK::Optional<Web::CSSPixels> >::~TemporaryChange()
Unexecuted instantiation: AK::TemporaryChange<AK::COWVector<Wasm::GlobalType> >::~TemporaryChange()
24
25
private:
26
    T& m_variable;
27
    T m_old_value;
28
};
29
30
}
31
32
#if USING_AK_GLOBALLY
33
using AK::TemporaryChange;
34
#endif