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
9namespace 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

source code of gtk/subprojects/libsass/src/source.hpp