| 48 | } |
| 49 | |
| 50 | DiscreteGraphCapacityAdapter::DiscreteGraphCapacityAdapter( |
| 51 | std::vector<int64_t> capacities, |
| 52 | GraphCapacityPreparedFn prepared_capacities_fn, |
| 53 | GraphCapacityPrepareFn prepare_capacity_fn) |
| 54 | : capacities_(std::move(capacities)), |
| 55 | prepared_capacities_fn_(std::move(prepared_capacities_fn)), |
| 56 | prepare_capacity_fn_(std::move(prepare_capacity_fn)) { |
| 57 | std::sort(capacities_.begin(), capacities_.end()); |
| 58 | capacities_.erase(std::unique(capacities_.begin(), capacities_.end()), capacities_.end()); |
| 59 | if (capacities_.empty()) { |
| 60 | throw std::runtime_error("discrete graph capacity list must not be empty"); |
| 61 | } |
| 62 | if (capacities_.front() <= 0) { |
| 63 | throw std::runtime_error("discrete graph capacities must be positive"); |
| 64 | } |
| 65 | } |
| 66 | |
| 67 | int64_t DiscreteGraphCapacityAdapter::base_capacity() const { |
| 68 | return capacities_.front(); |