File: cmakefileapiimportjob.h

package info (click to toggle)
kdevelop 4%3A24.12.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 71,888 kB
  • sloc: cpp: 290,869; python: 3,626; javascript: 3,518; sh: 1,316; ansic: 703; xml: 401; php: 95; lisp: 66; makefile: 31; sed: 12
file content (56 lines) | stat: -rw-r--r-- 1,488 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*
    SPDX-FileCopyrightText: 2020 Milian Wolff <mail@milianw.de>

    SPDX-License-Identifier: LGPL-2.0-or-later
*/

#pragma once

#include "cmakeprojectdata.h"

#include <KJob>

#include <QFutureWatcher>

namespace KDevelop
{
class IProject;
}

namespace CMake {
namespace FileApi {
class ImportJob : public KJob
{
    Q_OBJECT
public:
    enum {
        // Add a "random" number to KJob::UserDefinedError and hopefully avoid
        // clashes with OutputJob's, OutputExecuteJob's, etc. error codes.
        InvalidProjectDataError = UserDefinedError + 172
    };

    explicit ImportJob(KDevelop::IProject* project, QObject* parent = nullptr);
    ~ImportJob();

    /// Call this function if outdated data is going to be discarded to let this job return earlier.
    /// After this is called, outdated data is considered invalid. Thus when the data is outdated, the job
    /// finishes with InvalidProjectDataError, or emits invalid data if setEmitInvalidData() has been called.
    void setInvalidateOutdatedData();

    /// If this function is called, the job finishes without error and
    /// dataAvailable() signal is emitted when project data is invalid.
    void setEmitInvalidData();

    void start() override;

Q_SIGNALS:
    void dataAvailable(const CMakeProjectData& data);

private:
    KDevelop::IProject* m_project = nullptr;
    QFutureWatcher<CMakeProjectData> m_futureWatcher;
    bool m_invalidateOutdatedData = false;
    bool m_emitInvalidData = false;
};
}
}