Files
DEC/DEC_GUI/DEC-0.0/individual/InnerSubstratesPool.h
2024-10-03 18:43:04 +07:00

41 lines
1.9 KiB
C++

#pragma once
#include <vector>
#include <map>
#include <string>
using std::vector;
using std::map;
class InnerSubstratesPool {
protected:
std::vector<float> subConcentrations; // Êîíöåíòðàöèè ñóáñòðàòîâ â êîíêðåòíîì îðãàíèçìå
std::map<std::string, int> subNamesMap; // Ñëîâàðü íàçâàíèé ñóáñòðàòîâ (çíà÷åíèå - íîìåð â ìàññèâå)
// P.S. Âîçìîæíî, ñëîâàðè ñòîèò ñäåëàòü ñòàòè÷åñêèìè, îíè âåäü äëÿ âèäà îäèíàêîâûå...
std::vector<float> regConcentrations; // Êîíöåíòðàöèè íåñóáñòðàòíûõ ðåãóëÿòîðîâ â êîíêðåòíîì îðãàíèçìå
std::map<std::string, int> regNamesMap; // Ñëîâàðü íàçâàíèé íåñóáñòðàòíûõ ñóáñòðàòîâ (çíà÷åíèå - íîìåð â ìàññèâå)
public:
InnerSubstratesPool(){};
InnerSubstratesPool(const vector<float>& _subs, const map<std::string, int>& _subNames)
: subConcentrations(_subs), subNamesMap(_subNames){}
InnerSubstratesPool(const vector<float>& _subs, const map<std::string, int>& _subNames,
const vector<float>& _regs, const map<std::string, int>& _regNames)
: subConcentrations(_subs), subNamesMap(_subNames),
regConcentrations(_regs), regNamesMap(_regNames){}
virtual void utilizeSubstrate(int num, float count) { subConcentrations.at(num) -= count; }
virtual void utilizeRegulator(int num, float count) { regConcentrations.at(num) -= count; }
virtual void utilizeSubstrate(std::string name, float count) { subConcentrations.at(subNamesMap[name]) -= count; }
virtual void utilizeRegulator(std::string name, float count) { subConcentrations.at(regNamesMap[name]) -= count; }
virtual void addSubstrate(int num, float count) { subConcentrations.at(num) += count; }
virtual void addRegulator(int num, float count) { regConcentrations.at(num) += count; }
virtual void addSubstrate(std::string name, float count) { subConcentrations.at(subNamesMap[name]) += count; }
virtual void addRegulator(std::string name, float count) { subConcentrations.at(regNamesMap[name]) += count; }
};