#ifndef _DVM_EventH
#define _DVM_EventH

#include <iostream>
#include <string>

enum Event {

   Unknown_Func					= -1,
   Root_func					= 0,
   dvm_Init,
   Event_dvm_exit,

	 //====
	 blkdiv_,
	 //=***

   delrg_,
   insred_,
   arrcpy_,
   aarrcp_,
   waitcp_,
   crtda_,
   getam_,
   crtamv_,
   align_ ,
   getps_,
   saverv_,
   tstelm_,
   rwelm_,
   rlocel_,
   delda_,
   delobj_,
   copelm_,
   elmcpy_,
   wlocel_,
   clocel_,
   getlen_,
   tron_,
   delamv_,
   distr_,
   crtred_,
   delred_,
   begbl_,
   endbl_, 
   crtpl_,
   mappl_,
   endpl_,
   locind_,
   tstda_,
   srmem_, 
   tstio_, 
   getrnk_,
   getsiz_,
   realn_,
   redis_,
   arrmap_,
   setpsw_,
   setind_,
   locsiz_,
   imlast_,
   malign_,
   crtrg_,
   mrealn_,
   strtrd_,
   waitrd_,
   amvmap_,
   exfrst_,
   dopl_,
   mdistr_,
   mredis_,
   delarm_,
   delmvm_,

   crtshg_,
   inssh_,
   insshd_,
   incsh_,
   incshd_,
   strtsh_,
   waitsh_,
   delshg_,
   recvsh_,
   sendsh_,
   across_,

   getind_,
   addhdr_,
   delhdr_,
   troff_,
   biof_,
   eiof_,

   crtps_,
   psview_,
   delps_,
   setelw_,
   getamv_,	
   mapam_,	
   runam_,	
   stopam_,	
   getamr_,
   dprstv_,
   dstv_,
   dldv_,
   dbegpl_,
   dbegsl_,
   dendl_,
   diter_,
   drmbuf_,
   dskpbl_,

   binter_,
   einter_,
   bsloop_,
   bploop_,
   eloop_,

   crtrbl_,
   crtrbp_,
   loadrb_,
   waitrb_,
   crtbg_,
   insrb_,
   loadbg_,
   waitbg_,

   dvm_fopen,
   dvm_fclose,
   dvm_void_vfprintf,
   dvm_vfprintf,
   dvm_fwrite,
   dvm_fread,
   dvm_vscanf,
   dvm_fscanf,
   dvm_scanf,
   dvm_vfscanf,
   dvm_clearerr,
   dvm_feof,
   dvm_ferror,
   dvm_fflush,
   dvm_fgetc,
   dvm_fgetpos,
   dvm_fgets,
   dvm_fputc,
   dvm_fputs,
   dvm_freopen,
   dvm_fseek,
   dvm_fsetpos,
   dvm_ftell,
   dvm_getc,
   dvm_getchar,
   dvm_gets,
   dvm_putc,
   dvm_putchar,
   dvm_puts,
   dvm_rewind,
   dvm_setbuf,
   dvm_setvbuf,
   dvm_tmpfile,
   dvm_ungetc,
   dvm_void_fprintf,
   dvm_fprintf,
   dvm_void_printf,
   dvm_printf,
   dvm_void_vprintf,
   dvm_vprintf,
   dvm_remove,
   dvm_rename,
   dvm_tmpnam,
   dvm_close,
   dvm_fstat,
   dvm_lseek,
   dvm_open,
   dvm_read,
   dvm_write,
   dvm_access,
   dvm_stat,
   mps_Bcast,
   mps_Barrier,
   dvm_dfread,
   dvm_dfwrite
};

Event EventNameToID(const std::string& event_name);

#ifdef P_DEBUG
std::ostream& operator << (std::ostream& os, const Event& e);
#endif

enum FuncType {
	__RootFunc = 0,
	__DArrayFunc,
	__IntervalFunc,
	__IOFunc,
//	__MessageFunc,
	__MPS_AMFunc,
	__ParLoopFunc,
	__ReductFunc,
	__RegularFunc,
	__ShadowFunc,
	__RemAccessFunc,
	__UnknownFunc
};

FuncType GetFuncType(Event func_id);

#ifdef P_DEBUG
std::ostream& operator << (std::ostream& os, const FuncType& ft);
#endif

enum LineType {
	Unknown_ =-1,
	Call_	= 0,
	Ret_	= 1, 
	Event_	= 2,
	Root_	= 3
};

#endif 
