24 #include <type_traits>
27 #include "antares/optimisation/linear-problem-api/hasStatus.h"
33 virtual std::string toString(
size_t index)
const = 0;
34 virtual size_t size()
const = 0;
35 virtual void reserve(
size_t capacity) = 0;
36 virtual void clear() = 0;
52 static std::string FromDouble(
const double value)
54 std::ostringstream oss;
55 oss << std::setprecision(15) << value;
60 static std::string FormatValue(
const U& v)
62 if constexpr (std::is_same_v<U, std::string>)
66 else if constexpr (std::is_floating_point_v<U>)
70 else if constexpr (std::is_same_v<U, Antares::Optimisation::LinearProblemApi::MipBasisStatus>)
72 return StatusToString(v);
74 else if constexpr (is_optional_v<U>)
76 return v ? FormatValue(*v) :
"None";
80 return std::to_string(v);
90 void add(
const T& value)
92 data_.push_back(value);
95 std::string toString(
size_t index)
const override
97 return FormatValue(data_.at(index));
100 const T& get(
size_t index)
const
102 return data_.at(index);
105 size_t size()
const override
110 void reserve(
size_t capacity)
override
112 data_.reserve(capacity);
115 const std::vector<T>& data()
const
120 void clear()
override
126 std::vector<T> data_;
131 concept Integral = std::is_integral_v<T>;