//==============================================================================
//
// 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 <functional>
# include "ZdlExportDefine.hpp"
# include <DlSystem/IUDL.hpp>
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 < zdl : : DlSystem : : IUDL * ( void * , const zdl : : DlSystem : : UDLContext * ) > ;
/**
* 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_