#if !defined(__CONV_FUNC_H__)
#define __CONV_FUNC_H__
 
#include "..\AiBase\Specif\AiOption.h"
 
/**************************************/
#if !defined(CPA_EXPORT)
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else
#define CPA_EXPORT
#endif /*CPA_WANTS_IMPORT || CPA_WANTS_EXPORT*/
#endif /*CPA_EXPORT*/
/**************************************/
#undef extern
#define EXTERN_AI_DLL extern
 
/************************************************************************************************************************/
/* Function for editor and/or debugger + readrule.c*/
#if defined(__DEBUG_AI__) || defined(ACTIVE_EDITOR)
	EXTERN_AI_DLL CPA_EXPORT char *szFindFunctionScriptNameFromId(enum tdeFuncId_ eFuncId);
#endif /* __DEBUG_AI__ ACTIVE_EDITOR*/
 
#if defined(ACTIVE_EDITOR)
	EXTERN_AI_DLL CPA_EXPORT char *szGetFunctionTypeOutParamFromId(enum tdeFuncId_ eFuncId);
	EXTERN_AI_DLL CPA_EXPORT enum tdeFuncId_ fn_eFindFunctionIdFromEditorName(char *szFunction);
	EXTERN_AI_DLL CPA_EXPORT char *szFindFunctionEditorNameFromId(enum tdeFuncId_ eFuncId);
#endif /* ACTIVE_EDITOR*/
 
EXTERN_AI_DLL CPA_EXPORT char *szGetFunctionTypeInParamFromId(enum tdeFuncId_ eFuncId);
EXTERN_AI_DLL CPA_EXPORT enum tdeFuncId_ fn_eGetNbFunc();
EXTERN_AI_DLL CPA_EXPORT enum tdeFuncId_ fn_eFindFunctionIdFromScriptName(char *szFunction);
#define M_IsFuncIdValid(eFuncId) ((eFuncId)<fn_eGetNbFunc())
EXTERN_AI_DLL CPA_EXPORT unsigned char fn_ucGetFunctionUltraOperator(enum tdeFuncId_ eFuncId);
 
#if defined(_AI_LIB_)
	tdp_fn_p_stFunctionFunctionPtr fn_p_fn_pGetFunctionFunctionPtr(enum tdeFuncId_ eFuncId);
#endif /* _AI_LIB_*/
 
#if !defined(OPTIMIZED_COMMAND)
 
	void fn_vSetFunctionUltraOperator(enum tdeFuncId_ eFuncId,unsigned char bFlag);
 
	#if defined(ACTIVE_EDITOR)
		#define M_FUNCTION_ENTRY(a,b,english,c,d,e,f) a,b,english,c,d,e,f
		void fn_vDefineFunctionEntry(enum tdeFuncId_ eFuncId,char *szFunctionEditorName,char *szFunctionEditorName_En,char *szFunctionScriptName,tdp_fn_p_stFunctionFunctionPtr p_fn_p_stFunctionFunction,char *szFunctionTypeInParam,char *szFunctionTypeOutParam);				
	#elif defined(_AI_LIB_)
		#define M_FUNCTION_ENTRY(a,b,english,c,d,e,f) a,c,d,e,f
		void fn_vDefineFunctionEntry(enum tdeFuncId_ eFuncId,char *szFunctionScriptName,tdp_fn_p_stFunctionFunctionPtr p_fn_p_stFunctionFunction,char *szFunctionTypeInParam,char *szFunctionTypeOutParam);				
	#endif /* ACTIVE_EDITOR _AI_LIB_*/
 
	#if defined(__DEBUG_AI__)
		void fn_vInitFunctionTable(tdp_fn_p_stFunctionFunctionPtr fn_p_stDefaultFunctionFunctionPointer);
		void fn_vCheckFunctionTable(tdp_fn_p_stFunctionFunctionPtr fn_p_stDefaultFunctionFunctionPointer);
	#endif /* __DEBUG_AI__*/
 
#endif /* OPTIMIZED_COMMAND*/
 
/*******************************************************************************/
#undef EXTERN_AI_DLL
 
#endif /* __CONV_FUNC_H__*/
