TargetedCellKiller.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
00030
00031
00032
00033
00034
00035
00036 #ifndef TARGETEDCELLKILLER_HPP_
00037 #define TARGETEDCELLKILLER_HPP_
00038
00039 #include "AbstractCellKiller.hpp"
00040
00041 #include "ChasteSerialization.hpp"
00042 #include <boost/serialization/base_object.hpp>
00043
00048 template<unsigned DIM>
00049 class TargetedCellKiller : public AbstractCellKiller<DIM>
00050 {
00051 private:
00052
00056 unsigned mTargetIndex;
00057
00062 bool mBloodLust;
00063
00065 friend class boost::serialization::access;
00072 template<class Archive>
00073 void serialize(Archive & archive, const unsigned int version)
00074 {
00075 archive & boost::serialization::base_object<AbstractCellKiller<DIM> >(*this);
00076
00077
00078 }
00079
00080 public:
00081
00089 TargetedCellKiller(AbstractCellPopulation<DIM>* pCellPopulation, unsigned targetedIndex, bool bloodLust = true);
00090
00094 unsigned GetTargetIndex() const;
00095
00099 unsigned GetBloodLust() const;
00100
00105 void CheckAndLabelCellsForApoptosisOrDeath();
00106
00112 void OutputCellKillerParameters(out_stream& rParamsFile);
00113 };
00114
00115 #include "SerializationExportWrapper.hpp"
00116 EXPORT_TEMPLATE_CLASS_SAME_DIMS(TargetedCellKiller)
00117
00118 namespace boost
00119 {
00120 namespace serialization
00121 {
00125 template<class Archive, unsigned DIM>
00126 inline void save_construct_data(
00127 Archive & ar, const TargetedCellKiller<DIM> * t, const BOOST_PFTO unsigned int file_version)
00128 {
00129
00130 const AbstractCellPopulation<DIM>* const p_cell_population = t->GetCellPopulation();
00131 ar << p_cell_population;
00132 unsigned targeted_index = t->GetTargetIndex();
00133 ar << targeted_index;
00134 bool blood_lust = t->GetBloodLust();
00135 ar << blood_lust;
00136 }
00137
00141 template<class Archive, unsigned DIM>
00142 inline void load_construct_data(
00143 Archive & ar, TargetedCellKiller<DIM> * t, const unsigned int file_version)
00144 {
00145
00146 AbstractCellPopulation<DIM>* p_cell_population;
00147 ar >> p_cell_population;
00148 unsigned targeted_index;
00149 ar >> targeted_index;
00150 bool blood_lust;
00151 ar >> blood_lust;
00152
00153
00154 ::new(t)TargetedCellKiller<DIM>(p_cell_population, targeted_index, blood_lust);
00155 }
00156 }
00157 }
00158
00159 #endif