SloughingCellKiller.hpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef SLOUGHINGCELLKILLER_HPP_
00030 #define SLOUGHINGCELLKILLER_HPP_
00031
00032 #include "AbstractCellKiller.hpp"
00033
00034 #include "ChasteSerialization.hpp"
00035 #include <boost/serialization/base_object.hpp>
00036
00043 template<unsigned DIM>
00044 class SloughingCellKiller : public AbstractCellKiller<DIM>
00045 {
00046 private:
00047
00049 bool mSloughSides;
00050
00055 double mSloughHeight;
00056
00061 double mSloughWidth;
00062
00064 friend class boost::serialization::access;
00071 template<class Archive>
00072 void serialize(Archive & archive, const unsigned int version)
00073 {
00074 archive & boost::serialization::base_object<AbstractCellKiller<DIM> >(*this);
00075 }
00076
00077 public:
00078
00087 SloughingCellKiller(AbstractCellPopulation<DIM>* pCrypt, double sloughHeight, bool sloughSides=false, double sloughWidth = 10.0);
00088
00092 bool GetSloughSides() const;
00093
00097 double GetSloughHeight() const;
00098
00102 double GetSloughWidth() const;
00103
00107 virtual void TestAndLabelCellsForApoptosisOrDeath();
00108
00117 void OutputCellKillerParameters(out_stream& rParamsFile);
00118 };
00119
00120 #include "SerializationExportWrapper.hpp"
00121 EXPORT_TEMPLATE_CLASS_SAME_DIMS(SloughingCellKiller)
00122
00123 namespace boost
00124 {
00125 namespace serialization
00126 {
00130 template<class Archive, unsigned DIM>
00131 inline void save_construct_data(
00132 Archive & ar, const SloughingCellKiller<DIM> * t, const BOOST_PFTO unsigned int file_version)
00133 {
00134
00135 const AbstractCellPopulation<DIM>* const p_crypt = t->GetCellPopulation();
00136 ar << p_crypt;
00137 bool slough_sides = t->GetSloughSides();
00138 ar << slough_sides;
00139 double slough_height = t->GetSloughHeight();
00140 ar << slough_height;
00141 double slough_width = t->GetSloughWidth();
00142 ar << slough_width;
00143 }
00144
00148 template<class Archive, unsigned DIM>
00149 inline void load_construct_data(
00150 Archive & ar, SloughingCellKiller<DIM> * t, const unsigned int file_version)
00151 {
00152
00153 AbstractCellPopulation<DIM>* p_crypt;
00154 ar >> p_crypt;
00155 bool slough_sides;
00156 ar >> slough_sides;
00157 double slough_height;
00158 ar >> slough_height;
00159 double slough_width;
00160 ar >> slough_width;
00161
00162
00163 ::new(t)SloughingCellKiller<DIM>(p_crypt, slough_height, slough_sides, slough_width);
00164 }
00165 }
00166 }
00167
00168 #endif