loom

Форк
0
/
InputSupplier.cpp 
24 строки · 1.1 Кб
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
using namespace simodo;
7

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

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

23
        return std::make_shared<inout::FileStream>(path);
24
    }

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

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

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

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