blitz_query_cpp

Форк
0
/
syntax_node.cpp 
27 строк · 842.0 Байт
1
#include <syntax/syntax_node.hpp>
2

3
using namespace blitz_query_cpp;
4

5

6
bool syntax_node::add_child(syntax_node *child_node)
7
{
8
    size_t current_size = children.size();
9
    if (static_storage *storage = std::get_if<static_storage>(&child_storage))
10
    {
11
        if (current_size < storage->max_size())
12
        {
13
            children = node_span(storage->begin(), current_size + 1);
14
            children.back() = child_node;
15
            return true;
16
        }
17
        dynamic_storage dyn_store{storage->begin(), storage->end()};
18
        child_storage = std::move(dyn_store);
19
    }
20
    if (dynamic_storage *storage = std::get_if<dynamic_storage>(&child_storage))
21
    {
22
        storage->push_back(child_node);
23
        children = node_span(storage->begin(), storage->end());
24
        return true;
25
    }
26
    return false;
27
}

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

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

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

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