nixd
Loading...
Searching...
No Matches
NixTU.h
Go to the documentation of this file.
1#pragma once
2
4
9
10#include <memory>
11#include <optional>
12#include <vector>
13
14namespace nixd {
15
16/// \brief Holds analyzed information about a document.
17///
18/// TU stands for "Translation Unit".
19class NixTU {
20 std::vector<nixf::Diagnostic> Diagnostics;
21 std::shared_ptr<nixf::Node> AST;
22 std::optional<util::OwnedRegion> ASTByteCode;
23 std::unique_ptr<nixf::VariableLookupAnalysis> VLA;
24 std::unique_ptr<nixf::ParentMapAnalysis> PMA;
25 std::shared_ptr<const std::string> Src;
26
27public:
28 NixTU() = default;
29 NixTU(std::vector<nixf::Diagnostic> Diagnostics,
30 std::shared_ptr<nixf::Node> AST,
31 std::optional<util::OwnedRegion> ASTByteCode,
32 std::unique_ptr<nixf::VariableLookupAnalysis> VLA,
33 std::shared_ptr<const std::string> Src);
34
35 [[nodiscard]] const std::vector<nixf::Diagnostic> &diagnostics() const {
36 return Diagnostics;
37 }
38
39 [[nodiscard]] const std::shared_ptr<nixf::Node> &ast() const { return AST; }
40
41 [[nodiscard]] const nixf::ParentMapAnalysis *parentMap() const {
42 return PMA.get();
43 }
44
45 [[nodiscard]] const nixf::VariableLookupAnalysis *variableLookup() const {
46 return VLA.get();
47 }
48
49 [[nodiscard]] std::string_view src() const { return *Src; }
50};
51
52} // namespace nixd
Lookup variable names, from it's parent scope.
Holds analyzed information about a document.
Definition NixTU.h:19
const std::vector< nixf::Diagnostic > & diagnostics() const
Definition NixTU.h:35
NixTU()=default
std::string_view src() const
Definition NixTU.h:49
const nixf::ParentMapAnalysis * parentMap() const
Definition NixTU.h:41
const nixf::VariableLookupAnalysis * variableLookup() const
Definition NixTU.h:45
const std::shared_ptr< nixf::Node > & ast() const
Definition NixTU.h:39
ParentMap analysis.