You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.4 KiB
85 lines
2.4 KiB
6 years ago
|
//==============================================================================
|
||
|
//
|
||
|
// Copyright (c) 2015 Qualcomm Technologies, Inc.
|
||
|
// All Rights Reserved.
|
||
|
// Confidential and Proprietary - Qualcomm Technologies, Inc.
|
||
|
//
|
||
|
//==============================================================================
|
||
|
|
||
|
#ifndef _UDL_FUNC_HPP_
|
||
|
#define _UDL_FUNC_HPP_
|
||
|
|
||
|
#include <functional>
|
||
|
|
||
|
#include "ZdlExportDefine.hpp"
|
||
|
#include <DlSystem/IUDL.hpp>
|
||
|
|
||
|
namespace zdl {
|
||
|
namespace DlSystem {
|
||
|
class UDLContext;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
namespace zdl { namespace DlSystem {
|
||
|
/** @addtogroup c_plus_plus_apis C++
|
||
|
@{ */
|
||
|
/**
|
||
|
* @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<zdl::DlSystem::IUDL* (void*, const zdl::DlSystem::UDLContext*)>;
|
||
|
|
||
|
/**
|
||
|
* @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; }
|
||
|
|
||
|
/**
|
||
|
* @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;
|
||
|
};
|
||
|
|
||
|
/** @} */ /* end_addtogroup c_plus_plus_apis C++ */
|
||
|
}}
|
||
|
|
||
|
|
||
|
#endif // _UDL_FUNC_HPP_
|