//=============================================================================
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								//  Copyright (c) 2017-2020 Qualcomm Technologies, Inc.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//  All Rights Reserved.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//  Confidential and Proprietary - Qualcomm Technologies, Inc.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//=============================================================================
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <initializer_list> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <cstdio> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <memory> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  "ZdlExportDefine.hpp" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  "DlSystem/TensorShape.hpp" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  "DlSystem/StringList.hpp" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifndef DL_SYSTEM_TENSOR_SHAPE_MAP_HPP 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define DL_SYSTEM_TENSOR_SHAPE_MAP_HPP 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								namespace  DlSystem 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   // Forward declaration of tensor shape map implementation.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   class  TensorShapeMapImpl ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								namespace  zdl 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								namespace  DlSystem 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** @addtogroup c_plus_plus_apis C++
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								@ {  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  @ brief  . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  A  class  representing  the  map  of  names  and  tensorshapes . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								class  ZDL_EXPORT  TensorShapeMap  final 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								public : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /**
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ brief  . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  Creates  a  new  tensor  shape  map 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   TensorShapeMap ( ) ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /**
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  @ brief  . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  copy  constructor . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   *  @ param [ in ]  other  object  to  copy . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   TensorShapeMap ( const  TensorShapeMap &  other ) ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /**
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ brief  . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  assignment  operator . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   TensorShapeMap &  operator = ( const  TensorShapeMap &  other ) ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /**
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ brief  Adds  a  name  and  the  corresponding  tensor  pointer 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *         to  the  map 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ param [ in ]  name  The  name  of  the  tensor 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ param [ out ]  tensor  The  pointer  to  the  tensor 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ note  If  a  tensor  with  the  same  name  already  exists ,  no  new 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *        tensor  is  added . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   void  add ( const  char  * name ,  const  zdl : : DlSystem : : TensorShape &  tensorShape ) ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /**
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ brief  Removes  a  mapping  of  tensor  and  its  name  by  its  name 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ param [ in ]  name  The  name  of  tensor  to  be  removed 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ note  If  no  tensor  with  the  specified  name  is  found ,  nothing 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *        is  done . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   void  remove ( const  char  * name )  noexcept ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /**
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ brief  Returns  the  number  of  tensors  in  the  map 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   size_t  size ( )  const  noexcept ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /**
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ brief  . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  Removes  all  tensors  from  the  map 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   void  clear ( )  noexcept ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /**
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ brief  Returns  the  tensor  given  its  name . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ param [ in ]  name  The  name  of  the  tensor  to  get . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ return  nullptr  if  no  tensor  with  the  specified  name  is 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *          found ;  otherwise ,  a  valid  pointer  to  the  tensor . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   zdl : : DlSystem : : TensorShape  getTensorShape ( const  char  * name )  const  noexcept ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /**
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  @ brief  . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    *  Returns  the  names  of  all  tensor  shapes 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   zdl : : DlSystem : : StringList  getTensorShapeNames ( )  const ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   ~ TensorShapeMap ( ) ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								private : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   void  swap ( const  TensorShapeMap  & other ) ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   std : : unique_ptr < : : DlSystem : : TensorShapeMapImpl >  m_TensorShapeMapImpl ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  // DlSystem namespace
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  // zdl namespace
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** @} */  /* end_addtogroup c_plus_plus_apis C++ */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif  // DL_SYSTEM_TENSOR_SHAPE_MAP_HPP