The Execution Driver is a very simple function defined in flagr.cpp. Its role is to offer a unified manner of executing the exposed C functions. It takes as an argument a simple C structure that stores the user-defined input parameters and algorithm hyper-parameters and orchestrates the execution flow.
More specifically, the Execution driver initially copies the user-defined input parameters from the aforementioned C structure to an InputParams C++ object. In the sequel, it creates an InputData object which immediately starts reading the provided input file/s. Next, the aggregate() method of InputData is called to perform rank aggregation. Notice that the InputParams object travels to all FLAGR components and carries all the required parameters with it. Therefore, the rank aggregation method to be applied is automatically executed without any further checks, since InputParams notifies the Aggregator about the aggregation method that was selected by the user.
In case the user provided a valid input file with relevance judgments, the Execution Driver proceeds to the evaluation of the generated aggregate list. This is achieved by calling the evaluate() method of InputData which in turn triggers the Evaluator.
The following block diagram depicts the role of the execution driver as the connector between the dynamic library references and the C++ FLAGR core.

