+/**
+ * Operation codes for solver information callback
+ *
+ * Order of calls is expected to be:
+ * #GAS_OP_SOLVE_START
+ * #GAS_OP_SOLVE_STOP
+ * #GAS_OP_SOLVE_UPDATE_NOTIFICATION_START
+ * #GAS_OP_SOLVE_UPDATE_NOTIFICATION_STOP
+ *
+ */
+enum GAS_Solver_Operation
+{
+ /**
+ * A solution iteration has been started
+ */
+ GAS_OP_SOLVE_START,
+
+ /**
+ * A solution iteration has been finished
+ */
+ GAS_OP_SOLVE_STOP,
+
+ /**
+ * The setup of the problem as a preparation to solve it was started
+ */
+ GAS_OP_SOLVE_SETUP_START,
+
+ /**
+ * The setup of the problem as a preparation to solve is finished
+ */
+ GAS_OP_SOLVE_SETUP_STOP,
+
+ /**
+ * Solving of the LP problem was started
+ * MLP solver only
+ */
+ GAS_OP_SOLVE_MLP_LP_START,
+
+ /**
+ * Solving of the LP problem is done
+ * MLP solver only
+ */
+ GAS_OP_SOLVE_MLP_LP_STOP,
+
+ /**
+ * Solving of the MLP problem was started
+ * MLP solver only
+ */
+ GAS_OP_SOLVE_MLP_MLP_START,
+
+ /**
+ * Solving of the MLP problem is done
+ * MLP solver only
+ */
+ GAS_OP_SOLVE_MLP_MLP_STOP,
+
+ /**
+ * After the problem was finished, start notifications about changes
+ * to addresses
+ */
+ GAS_OP_SOLVE_UPDATE_NOTIFICATION_START,
+
+ /**
+ * After the problem was finished, notifications about changes to addresses
+ * are done
+ */
+ GAS_OP_SOLVE_UPDATE_NOTIFICATION_STOP
+};
+
+
+/**
+ * Status of a GAS_Solver_Operation operation
+ */
+enum GAS_Solver_Status
+{
+ /**
+ * Success
+ */
+ GAS_STAT_SUCCESS,
+
+ /**
+ * Failure
+ */
+ GAS_STAT_FAIL
+};
+
+
+/**
+ * Status of the operation
+ */
+enum GAS_Solver_Additional_Information
+{
+ /**
+ * No more specific information
+ */
+ GAS_INFO_NONE,
+
+ /**
+ * A full solution process is performed
+ * Quite specific to the MLP solver
+ */
+ GAS_INFO_FULL,
+
+ /**
+ * An existing solution was reused
+ * Quite specific to the MLP solver
+ */
+ GAS_INFO_UPDATED,
+
+ /**
+ * The proportional solver had to recalculate for a single network
+ */
+ GAS_INFO_PROP_SINGLE,
+
+ /**
+ * The proportional solver had to recalculate for all networks
+ */
+ GAS_INFO_PROP_ALL
+};
+
+
+/**
+ * Callback to call with additional information
+ * Used for measurement
+ *
+ * @param cls the closure
+ * @param op the operation
+ */
+typedef void
+(*GAS_solver_information_callback) (void *cls,
+ enum GAS_Solver_Operation op,
+ enum GAS_Solver_Status stat,
+ enum GAS_Solver_Additional_Information);
+
+