mini-llvm 0.1.0
Loading...
Searching...
No Matches
SourceManager.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2
3#pragma once
4
5#include <cstddef>
6#include <string>
7#include <string_view>
8#include <utility>
9#include <vector>
10
12
13namespace mini_llvm {
14
16public:
17 void setSource(std::string source);
18
19 const std::string &source() const & {
20 return source_;
21 }
22
23 std::string &&source() && {
24 return std::move(source_);
25 }
26
27 size_t numLines() const {
28 return lineStarts_.size();
29 }
30
31 std::string_view line(size_t lineNum) const;
32
33 std::pair<size_t, size_t> lineColumnNum(size_t location) const;
34
35private:
36 std::string source_;
37 std::vector<size_t> lineStarts_;
38 std::vector<size_t> lineEnds_;
39};
40
41} // namespace mini_llvm
#define MINI_LLVM_EXPORT
Definition Compiler.h:17
Definition SourceManager.h:15
void setSource(std::string source)
const std::string & source() const &
Definition SourceManager.h:19
std::pair< size_t, size_t > lineColumnNum(size_t location) const
std::string_view line(size_t lineNum) const
std::string && source() &&
Definition SourceManager.h:23
size_t numLines() const
Definition SourceManager.h:27
Definition GraphColoringAllocator.h:13