ifndef SASS_SOURCE_H define SASS_SOURCE_H
include “sass.hpp” include “memory.hpp” include “position.hpp” include “source_data.hpp”
namespace Sass {
class SourceFile :
public SourceData {
protected:
char* path;
char* data;
size_t length;
size_t srcid;
public:
SourceFile(
const char* path,
const char* data,
size_t srcid);
~SourceFile();
const char* end() const override final;
const char* begin() const override final;
virtual const char* getRawData() const override;
virtual SourceSpan getSourceSpan() override;
size_t size() const override final {
return length;
}
virtual const char* getPath() const override {
return path;
}
virtual size_t getSrcId() const override {
return srcid;
}
};
class SynthFile :
public SourceData {
protected:
const char* path;
public:
SynthFile(
const char* path) :
path(path)
{}
~SynthFile() {}
const char* end() const override final { return nullptr; }
const char* begin() const override final { return nullptr; };
virtual const char* getRawData() const override { return nullptr; };
virtual SourceSpan getSourceSpan() override { return SourceSpan(path); };
size_t size() const override final {
return 0;
}
virtual const char* getPath() const override {
return path;
}
virtual size_t getSrcId() const override {
return std::string::npos;
}
};
class ItplFile :
public SourceFile {
private:
SourceSpan pstate;
public:
ItplFile(const char* data,
const SourceSpan& pstate);
// Offset getPosition() const override final;
const char* getRawData() const override final;
SourceSpan getSourceSpan() override final;
};
}
endif