46 #include "RepastProcess.h"
48 #include <boost/serialization/access.hpp>
61 enum MASTER_NODE{ DEFAULT, SOURCE, TARGET };
66 bool _useTargetAsMaster;
69 bool defaultTarget(
int sourceRank,
int targetRank, MASTER_NODE useTargetAsMaster){
71 return (useTargetAsMaster == SOURCE ?
false :
72 useTargetAsMaster == TARGET ?
true :
73 ((_source->getId().currentRank() != rank) &&
74 (_target->getId().currentRank() == rank)));
80 RepastEdge() : _weight(1), _source(0), _target(0), _useTargetAsMaster(
false), _conflicted(
false){ }
109 RepastEdge(boost::shared_ptr<V>
source, boost::shared_ptr<V>
target, MASTER_NODE useTargetAsMaster = DEFAULT);
167 bool usesTargetAsMaster(){
return _useTargetAsMaster; }
169 void markConflicted(){ _conflicted =
true; }
170 void clearConflicted(){ _conflicted =
false; }
171 bool isConflicted(){
return _conflicted; }
177 _source(source.get()), _target(target.get()), _weight(1), _conflicted(false) {
178 _useTargetAsMaster = defaultTarget(_source->getId().currentRank(), _target->getId().currentRank(), useTargetAsMaster);
183 _source(source), _target(target), _weight(1), _conflicted(false){
184 _useTargetAsMaster = defaultTarget(_source->getId().currentRank(), _target->getId().currentRank(), useTargetAsMaster);
189 _source(source), _target(target), _weight(weight), _conflicted(false){
190 _useTargetAsMaster = defaultTarget(_source->getId().currentRank(), _target->getId().currentRank(), useTargetAsMaster);
195 _source(source.get()), _target(target.get()), _weight(weight), _conflicted(false){
196 _useTargetAsMaster = defaultTarget(_source->getId().currentRank(), _target->getId().currentRank(), useTargetAsMaster);
201 _source(edge._source), _target(edge._target), _weight(edge._weight),
202 _useTargetAsMaster(edge._useTargetAsMaster), _conflicted(edge._conflicted) { }
205 std::ostream& operator<<(std::ostream& os,
const RepastEdge<V>& edge) {
206 os << (*edge.
source()) << (edge._useTargetAsMaster ?
"" :
"(M)") <<
" -- " << (*edge.
target() << (edge._useTargetAsMaster ?
"(M)" :
""));
221 friend class boost::serialization::access;
223 template<
class Archive>
224 void serialize(Archive& ar,
const unsigned int version) {
225 ar & usesTargetAsMaster;
234 bool usesTargetAsMaster;
239 source(edge->
source()->getId()),
240 target(edge->
target()->getId()),
242 usesTargetAsMaster(edge->usesTargetAsMaster()){}