1 | #ifndef SASS_SOURCE_H |
2 | #define SASS_SOURCE_H |
3 | |
4 | #include "sass.hpp" |
5 | #include "memory.hpp" |
6 | #include "position.hpp" |
7 | #include "source_data.hpp" |
8 | |
9 | namespace Sass { |
10 | |
11 | class SourceFile : |
12 | public SourceData { |
13 | protected: |
14 | char* path; |
15 | char* data; |
16 | size_t length; |
17 | size_t srcid; |
18 | public: |
19 | |
20 | SourceFile( |
21 | const char* path, |
22 | const char* data, |
23 | size_t srcid); |
24 | |
25 | ~SourceFile(); |
26 | |
27 | const char* end() const override final; |
28 | const char* begin() const override final; |
29 | virtual const char* getRawData() const override; |
30 | virtual SourceSpan getSourceSpan() override; |
31 | |
32 | size_t size() const override final { |
33 | return length; |
34 | } |
35 | |
36 | virtual const char* getPath() const override { |
37 | return path; |
38 | } |
39 | |
40 | virtual size_t getSrcId() const override { |
41 | return srcid; |
42 | } |
43 | |
44 | }; |
45 | |
46 | class SynthFile : |
47 | public SourceData { |
48 | protected: |
49 | const char* path; |
50 | public: |
51 | |
52 | SynthFile( |
53 | const char* path) : |
54 | path(path) |
55 | {} |
56 | |
57 | ~SynthFile() {} |
58 | |
59 | const char* end() const override final { return nullptr; } |
60 | const char* begin() const override final { return nullptr; }; |
61 | virtual const char* getRawData() const override { return nullptr; }; |
62 | virtual SourceSpan getSourceSpan() override { return SourceSpan(path); }; |
63 | |
64 | size_t size() const override final { |
65 | return 0; |
66 | } |
67 | |
68 | virtual const char* getPath() const override { |
69 | return path; |
70 | } |
71 | |
72 | virtual size_t getSrcId() const override { |
73 | return std::string::npos; |
74 | } |
75 | |
76 | }; |
77 | |
78 | |
79 | class ItplFile : |
80 | public SourceFile { |
81 | private: |
82 | SourceSpan pstate; |
83 | public: |
84 | |
85 | ItplFile(const char* data, |
86 | const SourceSpan& pstate); |
87 | |
88 | // Offset getPosition() const override final; |
89 | const char* getRawData() const override final; |
90 | SourceSpan getSourceSpan() override final; |
91 | }; |
92 | |
93 | } |
94 | |
95 | #endif |
96 | |