/**
@anchor Input_Processor
@page LEVEL2 Input Processor

This page describes the methods available in the Trick::InputProcessor class.
@note <b>See @ref Input_File "Input File" for detailed information on the syntax of the input processor file. </b>

@section LEVEL3 User accessible routines

@li int @link Trick::IPPython::shutdown() shutdown() @endlink

These commands are for creating python events and manipulating them.

@li IPPythonEvent * @link ippython_new_event() new_event() @endlink
@li int @link ippython_add_read(double in_time , char * in_string) add_read(double in_time , char * in_string) @endlink
@li int @link ippython_add_read(unsigned int thread_id , double in_time , char * in_string) add_read(double in_time , char * in_string) @endlink
@li int @link ippython_delete_event(IPPythonEvent * in_event) delete_event(IPPythonEvent * in_event) @endlink
@li int @link ippython_manual_on(std::string * name) manual_on(std::string name) @endlink
@li int @link ippython_manual_fire(std::string * name) manual_fire(std::string name) @endlink
@li int @link ippython_manual_off(std::string * name) manual_off(std::string name) @endlink
@li int @link ippython_manual_done(std::string * name) manual_done(std::string name) @endlink

The commands for setting up each event are described in
Trick::IPPythonEvent

An event is in Normal mode by default, meaning its condition(s) are used to determine when to fire. Issuing one of the manual commands (@c manual_fire, 
@c manual_on, @c manual_off) puts an event in Manual mode, meaning its conditions are ignored and the type of manual command determines if the event fires.
Any event can be fired once immediately with the @c manual_fire command; the @e only way to fire non-"Added" events is with @c manual_fire().
An event will NOT fire when the @c manual_off() command is issued. An event returns to Normal mode by issuing the @c manual_done() command.
The commands described above can be done in the Run input file, and/or via the variable server, and/or via MTV (see @ref MalfunctionsTrickViewPage "MTV").

@image html ../../../doxygen/images/event_flowchart/event_loop.jpg
@image rtf ../../../doxygen/images/event_flowchart/event_loop.jpg
<center><b>Figure IP_2 Input Processor Event Loop</b></center>

The %Trick process_event() job will execute the Event Loop for all events that were added with the @c add_event() command. For events that were added with
@c add_event_before() or @c add_event_after(), the Event Loop is effectively executed once for the event immediately before/after the event target job.

@image html ../../../doxygen/images/event_flowchart/check_conditions.jpg
@image rtf ../../../doxygen/images/event_flowchart/check_conditions.jpg
<center><b>Figure IP_3 Input Processor Event Check Conditions Loop</b></center>

The Check Conditions Loop is called from the Event Loop to determine if the event should fire. Notice that no checking is necessary in Manual mode, the event
simply fires.

@image html ../../../doxygen/images/event_flowchart/fire_event.jpg
@image rtf ../../../doxygen/images/event_flowchart/fire_event.jpg
<center><b>Figure IP_4 Input Processor Event Fire Event Loop</b></center>

The Fire Event Loop is called from the Check Conditions Loop or directly by the @c manual_fire() command, causing all of the event's enabled actions to run.

*/
