AssociativeDataStorageRef::create node: различия между версиями

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
 
(не показаны 2 промежуточные версии этого же участника)
Строка 19: Строка 19:


Нечетные перегрузки, возвращающие адаптер [[DataStorageOwn]], генерируют исключение {{chsvlib_exception|AlreadyExistsException}} в случае, если добавление узла с указанным параметрически ключом, превысило бы установленное максимально допустимое количество узлов с одинаковым ключом, которое установлено реализацией. В противоположность им, четные перегрузки
Нечетные перегрузки, возвращающие адаптер [[DataStorageOwn]], генерируют исключение {{chsvlib_exception|AlreadyExistsException}} в случае, если добавление узла с указанным параметрически ключом, превысило бы установленное максимально допустимое количество узлов с одинаковым ключом, которое установлено реализацией. В противоположность им, четные перегрузки
с параметром [std::nothrow_t], которые возвращают смарт-указатель [[unique_interface_ptr]], в этом случае не генерируют исключения, но возвращают объект [[unique_interface_ptr]], сгенерированный по умолчанию.
с параметром [https://en.cppreference.com/w/cpp/memory/new/nothrow_t std::nothrow_t], которые возвращают смарт-указатель [[unique_interface_ptr]], в этом случае не генерируют исключения, но возвращают объект [[unique_interface_ptr]], сгенерированный по умолчанию.
{{clb|1, 2}}Ключ задается обобщенным C-указателем и байтовой длиной.{{cle}}
{{clb|1, 2}}Ключ задается обобщенным C-указателем и байтовой длиной.{{cle}}
{{clb|3, 4}}Поиск осуществляется по ключу, который задан указателем на байтовые данные. Данная перегрузка участвует в процедуре разрешения перегрузки только, если {{param|T}} является целочисленным байтовым типом.{{cle}}
{{clb|3, 4}}Поиск осуществляется по ключу, который задан указателем на байтовые данные. Данная перегрузка участвует в процедуре разрешения перегрузки только, если {{param|T}} является целочисленным байтовым типом.{{cle}}
Строка 27: Строка 27:
{{function template paramlist begin}}
{{function template paramlist begin}}
{{function template paramlist add|T, value_t|Типы элемента ключа {{param|pKey}} в перегрузках 3-6. Эти перегрузки участвуют в процедуре разрешения перегрузки, только если типы элементов ключа являются целочисленными и байтовыми.}}
{{function template paramlist add|T, value_t|Типы элемента ключа {{param|pKey}} в перегрузках 3-6. Эти перегрузки участвуют в процедуре разрешения перегрузки, только если типы элементов ключа являются целочисленными и байтовыми.}}
{{function template paramlist add|alloc_t|Тип менеджера памяти {{cpp_concept|Allocator}}, используемого для управления временем жизни ключа {{param|refKey}} ключа в перегрузках 5-8. Тип используется только для дедукции типа параметра {{param|refKey}} и игнорируется при делегировании вызова методу [[IAssociativeDataStorage::FindNode]].}}
{{function template paramlist add|alloc_t|Тип менеджера памяти {{cpp_concept|Allocator}}, используемого для управления временем жизни ключа {{param|refKey}} ключа в перегрузках 5-8. Тип используется только для дедукции типа параметра {{param|refKey}} и игнорируется при делегировании вызова методу [[IAssociativeDataStorage::CreateNode]].}}
{{function template paramlist add|traits_t|Тип политики обработки {{cpp_concept|CharTraits}} символов ключа в перегрузках 7 и 8. Тип используется только для дедукции типа параметра {{param|refKey}} и игнорируется при делегировании вызова методу [[IAssociativeDataStorage::FindNode]].}}
{{function template paramlist add|traits_t|Тип политики обработки {{cpp_concept|CharTraits}} символов ключа в перегрузках 7 и 8. Тип используется только для дедукции типа параметра {{param|refKey}} и игнорируется при делегировании вызова методу [[IAssociativeDataStorage::CreateNode]].}}
{{function template paramlist end}}
{{function template paramlist end}}
{{function paramlist begin}}
{{function paramlist begin}}
{{function paramlist add|pKey|Указатель C, адресующий байты ключа в перегрузках 1-4 метода [[AssociativeDataStorageRef::find_node|find_node]].|paramdir=[in]}}
{{function paramlist add|pKey|Указатель C, адресующий байты ключа в перегрузках 1-4 метода [[AssociativeDataStorageRef::create_node|create_node]].|paramdir=[in]}}
{{function paramlist add|cbKey|Байтовый размер ключа в перегрузках 1-4.}}
{{function paramlist add|cbKey|Байтовый размер ключа в перегрузках 1-4.}}
{{function paramlist add|refKey|Ссылка на вектор [https://en.cppreference.com/w/cpp/container/vector std::vector] байт (перегрузки 5 и 6) или на C++ строку [https://en.cppreference.com/w/cpp/string/basic_string std::basic_string] (перегрузки 7 и 8) символов с ключом.}}
{{function paramlist add|refKey|Ссылка на вектор [https://en.cppreference.com/w/cpp/container/vector std::vector] байт (перегрузки 5 и 6) или на C++ строку [https://en.cppreference.com/w/cpp/string/basic_string std::basic_string] (перегрузки 7 и 8) символов с ключом.}}

Текущая версия на 19:50, 19 августа 2019

unique_interface_ptr<IDataStorage> create_node(const void* pKey, std::uint32_t cbKey, std::nothrow_t); //1
DataStorageOwn create_node(const void* pKey, std::uint32_t cbKey); //2
template <class T>
unique_interface_ptr<IDataStorage> create_node(const T* pKey, std::uint32_t cbKey, std::nothrow_t); //3
template <class T>
DataStorageOwn auto create_node(const T* pKey, std::uint32_t cbKey); //4
template <class value_t, class alloc_t>
unique_interface_ptr<IDataStorage> create_node(const std::vector<value_t, alloc_t>& refKey, std::nothrow_t); //5
template <class value_t, class alloc_t>
DataStorageOwn create_node(const std::vector<value_t, alloc_t>& refKey); //6
template <class traits_t, class alloc_t>
unique_interface_ptr<IDataStorage> create_node(const std::basic_string<char, traits_t, alloc_t>& refKey, std::nothrow_t); //7
template <class traits_t, class alloc_t>
DataStorageOwn create_node(const std::basic_string<char, traits_t, alloc_t>& refKey); //8
unique_interface_ptr<IDataStorage> create_node(const char* pszKey, std::nothrow_t); //9
DataStorageOwn create_node(const char* pszKey); //10

Создает новый узел и ассоциирует его с заданным ключом.

Нечетные перегрузки, возвращающие адаптер DataStorageOwn, генерируют исключение Chusov::Exceptions::AlreadyExistsException в случае, если добавление узла с указанным параметрически ключом, превысило бы установленное максимально допустимое количество узлов с одинаковым ключом, которое установлено реализацией. В противоположность им, четные перегрузки с параметром std::nothrow_t, которые возвращают смарт-указатель unique_interface_ptr, в этом случае не генерируют исключения, но возвращают объект unique_interface_ptr, сгенерированный по умолчанию.

1, 2 Ключ задается обобщенным C-указателем и байтовой длиной.
3, 4 Поиск осуществляется по ключу, который задан указателем на байтовые данные. Данная перегрузка участвует в процедуре разрешения перегрузки только, если T является целочисленным байтовым типом.
5, 6 Ключ поиска задается вектором байт, задающих ключевые данные.
7, 8 Ключ поиска задается C++-строкой.
9, 10 Ключ поиска задается C-строкой.
Параметры шаблона
T, value_tТипы элемента ключа pKey в перегрузках 3-6. Эти перегрузки участвуют в процедуре разрешения перегрузки, только если типы элементов ключа являются целочисленными и байтовыми.
alloc_tТип менеджера памяти Allocator, используемого для управления временем жизни ключа refKey ключа в перегрузках 5-8. Тип используется только для дедукции типа параметра refKey и игнорируется при делегировании вызова методу IAssociativeDataStorage::CreateNode.
traits_tТип политики обработки CharTraits символов ключа в перегрузках 7 и 8. Тип используется только для дедукции типа параметра refKey и игнорируется при делегировании вызова методу IAssociativeDataStorage::CreateNode.
Параметры
[in]pKeyУказатель C, адресующий байты ключа в перегрузках 1-4 метода create_node.
cbKeyБайтовый размер ключа в перегрузках 1-4.
refKeyСсылка на вектор std::vector байт (перегрузки 5 и 6) или на C++ строку std::basic_string (перегрузки 7 и 8) символов с ключом.
[in]pszKeyC-строка, завершающаяся терминальным нулем, задающая ключ при использовании для адресации данных перегрузкок 9 или 10.
Возвращаемое значение:
Уникальный указатель unique_interface_ptr<IDataStorage> или объект DataStorageOwn, которые адресует созданный пустой накопитель данных, связанный с созданным узлом. Если ключ не найден, нечетные перегрузки возвращают объект unique_interface_ptr, сконструированный по умолчанию.