Line data Source code
1 : #ifndef BF6AA0FA_191C_4C99_AE82_01625CBB6222_HPP 2 : #define BF6AA0FA_191C_4C99_AE82_01625CBB6222_HPP 3 : 4 : #include "Types.hpp" 5 : #include "Vector2d.hpp" 6 : 7 : namespace cell 8 : { 9 : 10 : class MembraneType 11 : { 12 : public: 13 : enum class Permeability 14 : { 15 : Inward, 16 : Outward, 17 : Bidirectional, 18 : None 19 : }; 20 : 21 : using PermeabilityMap = std::unordered_map<DiscTypeID, Permeability>; 22 : 23 : public: 24 : MembraneType(std::string name, double radius, PermeabilityMap permeabilityMap); 25 : 26 : MembraneType(const MembraneType&) = delete; 27 : MembraneType& operator=(const MembraneType&) = delete; 28 14 : MembraneType(MembraneType&&) = default; 29 : MembraneType& operator=(MembraneType&&) = default; 30 : 31 : Permeability getPermeabilityFor(const DiscTypeID& discTypeID) const; 32 : 33 : const std::string& getName() const; 34 : double getRadius() const; 35 : 36 : private: 37 : std::string name_; 38 : PermeabilityMap permeabilityMap_; 39 : double radius_; 40 : }; 41 : 42 : } // namespace cell 43 : 44 : #endif /* BF6AA0FA_191C_4C99_AE82_01625CBB6222_HPP */