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

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
 
Строка 18: Строка 18:
|{{AssociativeDataStorageRef::find_node brief}}
|{{AssociativeDataStorageRef::find_node brief}}
# Ключ задается обобщенным C-указателем и байтовой длиной. Если узел не найден, возвращается пустой указатель.
# Ключ задается обобщенным C-указателем и байтовой длиной. Если узел не найден, возвращается пустой указатель.
# Аналогично, но если узел не найден, генерируется исключение [https://www.chusov.org/doxygen/struct_chusov_1_1_exceptions_1_1_not_found_exception.html Chusov::Exceptions::NotFoundException].
# Аналогично, но если узел не найден, генерируется исключение {{chsvlib_exception|NotFoundException}}.
# Поиск осуществляется по ключу, который задан указателем на байтовые данные. Данная перегрузка участвует в процедуре разрешения перегрузки только, если {{param|T}} является целочисленным байтовым типом. Если узел не найден, возвращается пустой указатель.
# Поиск осуществляется по ключу, который задан указателем на байтовые данные. Данная перегрузка участвует в процедуре разрешения перегрузки только, если {{param|T}} является целочисленным байтовым типом. Если узел не найден, возвращается пустой указатель.
# Аналогично, но с генерацией исключения [https://www.chusov.org/doxygen/struct_chusov_1_1_exceptions_1_1_not_found_exception.html Chusov::Exceptions::NotFoundException], если узел с заданным ключом не существует.
# Аналогично, но с генерацией исключения {{chsvlib_exception|NotFoundException}}, если узел с заданным ключом не существует.
# Ключ поиска задается [https://en.cppreference.com/w/cpp/container/vector вектором] байт, задающих ключевые данные. Если ассоциированный с ключом узел не найден, возвращается пустой указатель.
# Ключ поиска задается [https://en.cppreference.com/w/cpp/container/vector вектором] байт, задающих ключевые данные. Если ассоциированный с ключом узел не найден, возвращается пустой указатель.
# Аналогично, но с генерацией исключения [https://www.chusov.org/doxygen/struct_chusov_1_1_exceptions_1_1_not_found_exception.html Chusov::Exceptions::NotFoundException], если узел с заданным ключом не существует.
# Аналогично, но с генерацией исключения {{chsvlib_exception|NotFoundException}}, если узел с заданным ключом не существует.
# Ключ поиска задается [https://en.cppreference.com/w/cpp/string/basic_string C++-строкой]. Если ассоциированный с ключом узел не найден, возвращается пустой указатель.
# Ключ поиска задается [https://en.cppreference.com/w/cpp/string/basic_string C++-строкой]. Если ассоциированный с ключом узел не найден, возвращается пустой указатель.
# Аналогично, но если узел не найден, генерируется исключение [https://www.chusov.org/doxygen/struct_chusov_1_1_exceptions_1_1_not_found_exception.html Chusov::Exceptions::NotFoundException].
# Аналогично, но если узел не найден, генерируется исключение {{chsvlib_exception|NotFoundException}}.
# Ключ поиска задается C-строкой. Если ассоциированный с ключом узел не найден, возвращается пустой указатель.
# Ключ поиска задается C-строкой. Если ассоциированный с ключом узел не найден, возвращается пустой указатель.
# Аналогично, но с генерацией исключения [https://www.chusov.org/doxygen/struct_chusov_1_1_exceptions_1_1_not_found_exception.html Chusov::Exceptions::NotFoundException], если ключ не найден.}}
# Аналогично, но с генерацией исключения {{chsvlib_exception|NotFoundException}}, если ключ не найден.}}
{{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. Эти перегрузки участвуют в процедуре разрешения перегрузки, только если типы элементов ключа являются целочисленными и байтовыми.}}

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

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

Осуществляет поиск узла по ключу.

  1. Ключ задается обобщенным C-указателем и байтовой длиной. Если узел не найден, возвращается пустой указатель.
  2. Аналогично, но если узел не найден, генерируется исключение Chusov::Exceptions::NotFoundException.
  3. Поиск осуществляется по ключу, который задан указателем на байтовые данные. Данная перегрузка участвует в процедуре разрешения перегрузки только, если T является целочисленным байтовым типом. Если узел не найден, возвращается пустой указатель.
  4. Аналогично, но с генерацией исключения Chusov::Exceptions::NotFoundException, если узел с заданным ключом не существует.
  5. Ключ поиска задается вектором байт, задающих ключевые данные. Если ассоциированный с ключом узел не найден, возвращается пустой указатель.
  6. Аналогично, но с генерацией исключения Chusov::Exceptions::NotFoundException, если узел с заданным ключом не существует.
  7. Ключ поиска задается C++-строкой. Если ассоциированный с ключом узел не найден, возвращается пустой указатель.
  8. Аналогично, но если узел не найден, генерируется исключение Chusov::Exceptions::NotFoundException.
  9. Ключ поиска задается C-строкой. Если ассоциированный с ключом узел не найден, возвращается пустой указатель.
  10. Аналогично, но с генерацией исключения Chusov::Exceptions::NotFoundException, если ключ не найден.
Параметры шаблона
T, value_tТипы элемента ключа pKey в перегрузках 3-6. Эти перегрузки участвуют в процедуре разрешения перегрузки, только если типы элементов ключа являются целочисленными и байтовыми.
alloc_tТип менеджера памяти Allocator, используемого для управления временем жизни ключа refKey ключа в перегрузках 5-8. Тип используется только для дедукции типа параметра refKey и игнорируется при делегировании вызова методу IAssociativeDataStorage::FindNode.
traits_tТип политики обработки CharTraits символов ключа в перегрузках 7 и 8. Тип используется только для дедукции типа параметра refKey и игнорируется при делегировании вызова методу IAssociativeDataStorage::FindNode.
Параметры
[in]pKeyУказатель C, адресующий байты ключа в перегрузках 1-4 метода find_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, сконструированный по умолчанию.