#ifndef SASS_SOURCE_MAP_H #define SASS_SOURCE_MAP_H #include #include #include "ast_fwd_decl.hpp" #include "base64vlq.hpp" #include "position.hpp" #include "mapping.hpp" #include "backtrace.hpp" #include "memory.hpp" #define VECTOR_PUSH(vec, ins) vec.insert(vec.end(), ins.begin(), ins.end()) #define VECTOR_UNSHIFT(vec, ins) vec.insert(vec.begin(), ins.begin(), ins.end()) namespace Sass { class Context; class OutputBuffer; class SourceMap { public: sass::vector source_index; SourceMap(); SourceMap(const sass::string& file); void append(const Offset& offset); void prepend(const Offset& offset); void append(const OutputBuffer& out); void prepend(const OutputBuffer& out); void add_open_mapping(const AST_Node* node); void add_close_mapping(const AST_Node* node); sass::string render_srcmap(Context &ctx); SourceSpan remap(const SourceSpan& pstate); private: sass::string serialize_mappings(); sass::vector mappings; Position current_position; public: sass::string file; private: Base64VLQ base64vlq; }; class OutputBuffer { public: OutputBuffer(void) : buffer(), smap() { } public: sass::string buffer; SourceMap smap; }; } #endif