virtual void evaluate_income(int target_size, std::ostream &os) { if (not_available(target_size, os)) { return; } int remaining = target_size; price_t income(0); // start from the end of the order list to maximize profit // iterate over sorted orders; O(N), N/2 on average sorted_orders_t::iterator it = m_sorted_orders.begin(); for (; it != m_sorted_orders.end() && remaining > 0; ++it) { order_ptr & ord = (*it); if (!ord->active()) { continue; } int shares = std::min(remaining, ord->size()); income += ord->price_of(shares); remaining -= shares; } report_income(income, os); }
NLPQLPOptimizer* new_NLPQLPOptimizer(Model& model) { #ifdef DAKOTA_DYNLIB not_available("NLPQLP"); return 0; #else return new NLPQLPOptimizer(model); #endif // DAKOTA_DYNLIB }
NLPQLPOptimizer* new_NLPQLPOptimizer(NoDBBaseConstructor, Model& model) { #ifdef DAKOTA_DYNLIB not_available("NLPQLP"); return 0; #else return new NLPQLPOptimizer(NoDBBaseConstructor(), model); #endif // DAKOTA_DYNLIB }
static DBusMessage *remove_service_record(DBusConnection *conn, DBusMessage *msg, void *data) { struct service_adapter *serv_adapter = data; dbus_uint32_t handle; const char *sender; if (dbus_message_get_args(msg, NULL, DBUS_TYPE_UINT32, &handle, DBUS_TYPE_INVALID) == FALSE) return NULL; sender = dbus_message_get_sender(msg); if (remove_record(conn, sender, serv_adapter, handle) < 0) return not_available(msg); return dbus_message_new_method_return(msg); }