//============================================================================== // // Copyright (c) 2015-2021 Qualcomm Technologies, Inc. // All Rights Reserved. // Confidential and Proprietary - Qualcomm Technologies, Inc. // //============================================================================== #ifndef _UDL_FUNC_HPP_ #define _UDL_FUNC_HPP_ #include #include "ZdlExportDefine.hpp" #include namespace zdl { namespace DlSystem { class UDLContext; } } namespace zdl { namespace DlSystem { /** * NOTE: DEPRECATED, MAY BE REMOVED IN THE FUTURE. * * @brief . * * Definition of UDLFactoyFunc, using/typedef and default FactoryFunction * UDLBundle - a simple way to bundle func and cookie into one type */ /** * @brief . * * Convenient typedef for user defined layer creation factory * * @param[out] void* Cookie - a user opaque data that was passed during SNPE's runtime's * CreateInstance. SNPE's runtime is passing this back to the user. * * @param[out] DlSystem::UDLContext* - The specific Layer Description context what is passe * SNPE runtime. * * @return IUDL* - a Concrete instance of IUDL derivative */ using UDLFactoryFunc = std::function; /** * NOTE: DEPRECATED, MAY BE REMOVED IN THE FUTURE. * * @brief . * * default UDL factory implementation * * @param[out] DlSystem::UDLContext* - The specific Layer Description context what is passe * SNPE runtime. * * @param[out] void* Cookie - a user opaque data that was passed during SNPE's runtime's * CreateInstance. SNPE's runtime is passing this back to the user. * * @return IUDL* - nullptr to indicate SNPE's runtime that there is no specific * implementation for UDL. When SNPE's runtime sees nullptr as a return * value from the factory, it will halt execution if model has an unknown layer * */ inline ZDL_EXPORT zdl::DlSystem::IUDL* DefaultUDLFunc(void*, const zdl::DlSystem::UDLContext*) { return nullptr; } /** * NOTE: DEPRECATED, MAY BE REMOVED IN THE FUTURE. * * @brief . * * Simple struct to bundle 2 elements. * A user defined cookie that would be returned for each * IUDL call. The user can place anything there and the * SNPE runtime will provide it back */ struct ZDL_EXPORT UDLBundle { void *cookie = nullptr; UDLFactoryFunc func = DefaultUDLFunc; }; }} #endif // _UDL_FUNC_HPP_