loom

Форк
0
/
InputSupplier.cpp 
28 строк · 1.2 Кб
1
#include "InputSupplier.h"
2
#include "simodo/inout/token/RefBufferStream.h"
3
#include "simodo/inout/token/BufferStream.h"
4
#include "simodo/inout/token/FileStream.h"
5

6
#include <cassert>
7

8
using namespace simodo;
9

10
std::shared_ptr<inout::InputStream_interface> InputSupplier::supply(const std::string & path) const
11
    {
12
        if (path == _base_file_path) {
13
            std::shared_ptr<inout::InputStream_interface> stream = std::make_shared<inout::RefBufferStream>(_text.data());
14
            return stream;
15
        }
16

17
        if (const lsp::DocumentContext * doc = _server.findDocument(path); doc) {
18
            /// \note Такая последовательность нужна для выполнения разграничения доступа внутри методов
19
            /// классов пространства имён lsp
20
            std::shared_ptr<inout::InputStream_interface> stream = std::make_shared<inout::BufferStream>();
21
            inout::BufferStream * buffer = dynamic_cast<inout::BufferStream *>(stream.get());
22
            assert(buffer);
23
            doc->copyContent(buffer->buffer());
24
            return stream;
25
        }
26

27
        return std::make_shared<inout::FileStream>(path);
28
    }

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.