-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathmi_model.hpp
More file actions
57 lines (42 loc) · 1.43 KB
/
mi_model.hpp
File metadata and controls
57 lines (42 loc) · 1.43 KB
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
57
#pragma once
#include <std_fs>
#include <stdfwd/functional>
//------------------------------------------------------------------------------
namespace model_includes
{
class File;
class Include;
enum class FileType;
enum class IncludeStatus;
enum class IncludeType;
//------------------------------------------------------------------------------
class Model
{
public:
using FileCallback = std::function< bool( const File & ) >;
using IncludeCallback = std::function< bool( const Include & ) >;
using Path = stdfs::path;
virtual ~Model() = default;
virtual std::size_t getFilesCount() const = 0;
virtual void forEachFile( FileCallback _callback ) const = 0;
virtual void setProjectDir( const Path & _path ) = 0;
virtual const Path & getProjectDir() const = 0;
virtual const File * findFile( const Path & _filePath ) const = 0;
virtual File & ensureFile( const Path & _filePath, FileType _fileType ) = 0;
virtual void forEachInclude( IncludeCallback _callback ) const = 0;
struct IncludeLocationInfo
{
const std::size_t m_line;
const std::size_t m_begin;
const std::size_t m_end;
};
virtual const Include & createInclude(
const IncludeLocationInfo & _location,
File & _sourceFile,
File & _destinationFile,
IncludeStatus _status,
IncludeType _type ) = 0;
};
//------------------------------------------------------------------------------
}
//------------------------------------------------------------------------------