File indexing completed on 2024-05-19 15:44:54

0001 /*
0002     SPDX-FileCopyrightText: 2014 Milian Wolff <mail@milianw.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #ifndef CLANGPARSINGENVIRONMENTFILE_H
0008 #define CLANGPARSINGENVIRONMENTFILE_H
0009 
0010 #include "clangparsingenvironment.h"
0011 
0012 #include <language/duchain/duchainregister.h>
0013 #include "clangprivateexport.h"
0014 
0015 class ClangParsingEnvironmentFileData;
0016 
0017 class KDEVCLANGPRIVATE_EXPORT ClangParsingEnvironmentFile : public KDevelop::ParsingEnvironmentFile
0018 {
0019 public:
0020     using Ptr = QExplicitlySharedDataPointer<ClangParsingEnvironmentFile>;
0021 
0022     ClangParsingEnvironmentFile(const KDevelop::IndexedString& url, const ClangParsingEnvironment& environment);
0023     explicit ClangParsingEnvironmentFile(ClangParsingEnvironmentFileData& data);
0024     ~ClangParsingEnvironmentFile() override;
0025 
0026     bool needsUpdate(const KDevelop::ParsingEnvironment* environment = nullptr) const override;
0027     int type() const override;
0028 
0029     bool matchEnvironment(const KDevelop::ParsingEnvironment* environment) const override;
0030 
0031     void setEnvironment(const ClangParsingEnvironment& environment);
0032 
0033     ClangParsingEnvironment::Quality environmentQuality() const;
0034 
0035     uint environmentHash() const;
0036 
0037     enum {
0038         Identity = 142
0039     };
0040 
0041 private:
0042     DUCHAIN_DECLARE_DATA(ClangParsingEnvironmentFile)
0043 };
0044 
0045 DUCHAIN_DECLARE_TYPE(ClangParsingEnvironmentFile)
0046 
0047 #endif // CLANGPARSINGENVIRONMENTFILE_H