int Raise_event_calls_reportAppLayer::run(int argc, char * argv[])
{
    printf("Raise_event_calls_reportAppLayer - version: %d.%d.%d (%s)\n",
            RAISE_EVENT_CALLS_REPORT_MAJOR,
            RAISE_EVENT_CALLS_REPORT_MINOR,
            RAISE_EVENT_CALLS_REPORT_PATCH,
            RAISE_EVENT_CALLS_REPORT_DebugFlag);
    printf("\n");

    BasicEventHandling_ns::EventHandler_stderr handler_stderr;
    handler_stderr.open(argv[0]);

    std::string strEventDefSourceFile;
    std::string strRaiseEventSourceFile;

    Report report;
    report.set_event_handler(&handler_stderr);
    if (!report.get_params(argc,
                                argv,
                                strEventDefSourceFile,
                                strRaiseEventSourceFile))
    {
        return -1;
    }

    std::list<std::string> listEventDefSourceFile;
    if (!report.parse_eventdef_source_file(strEventDefSourceFile, listEventDefSourceFile))
    {
        return -1;
    }

    Events events;
    events.set_event_handler(&handler_stderr);

    std::list<std::string>::iterator it;
    for (it = listEventDefSourceFile.begin(); it != listEventDefSourceFile.end(); it++)
    {
        events.ReadEventsSourceFile(it->c_str());
    }

    std::list<std::string> listRaiseEventSourceFile;
    if (!report.parse_raiseevent_source_file(strRaiseEventSourceFile, listRaiseEventSourceFile))
    {
        return -1;
    }

    std::vector<EventCall> vectEventCall;
    for (it = listRaiseEventSourceFile.begin(); it != listRaiseEventSourceFile.end(); it++)
    {
        if (report.extract_raise_event_calls(*it, vectEventCall))
        {
            report.show_calls(*it, vectEventCall, events);
        }

           vectEventCall.clear();
    }

    std::cout << std::endl;

    return 0;
}