24 return solarId != std::numeric_limits<uint16_t>::max();
33 mFeeLink2Solar.fill(std::numeric_limits<uint16_t>::max());
34 std::istringstream input(content.data());
36 while (std::getline(input, s)) {
40 std::istringstream line(s);
42 line >> link_id >>
f >> l;
43 auto ix = indexFeeLink(
f, l);
47 mFeeLink2Solar.at(ix) = link_id;
55 std::set<uint16_t> solarIds;
56 for (
auto s : mFeeLink2Solar) {
57 if (s != std::numeric_limits<uint16_t>::max()) {
66 auto it = std::find(begin(mFeeLink2Solar),
67 end(mFeeLink2Solar), solarId);
68 if (it == mFeeLink2Solar.end()) {
71 auto d = std::distance(mFeeLink2Solar.begin(), it);
72 int feeId = d / sMaxLinkId;
73 int linkId = d % sMaxLinkId;
77int MapCRU::indexFeeLink(
int feeid,
int linkid)
const
79 if (feeid < 0 || feeid >= sMaxFeeId) {
82 if (linkid < 0 || linkid >= sMaxLinkId) {
85 return feeid * sMaxLinkId + linkid;
90 return std::count_if(mFeeLink2Solar.begin(), mFeeLink2Solar.end(), [](uint16_t
a) { return a != std::numeric_limits<uint16_t>::max(); });
98 auto ix = indexFeeLink(feeLinkId.
feeId(), feeLinkId.
linkId());
102 auto solarId = mFeeLink2Solar.at(ix);
103 if (isValid(solarId)) {
std::optional< uint16_t > operator()(const FeeLinkId &feeLinkId) const
MapCRU(std::string_view content)
std::set< uint16_t > getSolarUIDs() const
GLboolean GLboolean GLboolean GLboolean a
bool isValid(std::string_view dcsAlias)