#ifndef	MONITOR_H
#define	MONITOR_H

#include <v_lib.h>
#include "psys.h"

typedef void (*monroutine_entry_t)(particle_system_p ps);

typedef struct monroutine_s
{
	char *desc; /* description */
	char *name; /* name that is used during parsing of script */
	/*
	 * Name that is used for header of common output file.
	 * If monitor routine does not write pair of values to ps->kinetics_outfile,
	 * than this field must be NULL or empty string.
	 */
	char *denotation;
	/* this routine  */
	monroutine_entry_t entry;
} monroutine_t, *monroutine_p;

vboolean monitorInit(particle_system_p ps);
monroutine_entry_t monitorEntryForName(char *name);
void monitorShutdown(particle_system_p ps);
void listMonitorRoutines();
/* TODO vboolean parseMonitorRoutines(vhandle_t lex,particle_system_p ps); */

#endif	/* !MONITOR_H */
