20 ObjId( managerId_, (msgIndex != 0) ? msgIndex: msg_.size() ),
25 if ( msgIndex == 0 ) {
26 msg_.push_back(
this );
28 if (
msg_.size() <= msgIndex )
29 msg_.resize( msgIndex + 1 );
30 msg_[ msgIndex ] =
this;
82 FuncId fid,
unsigned int b,
unsigned int n )
const
91 }
else if ( orig ==
e2() ) {
101 cout <<
"Error: OneToAllMsg::copy: SliceToSliceMsg not yet implemented\n";
117 "DataId of source Element.",
122 static Finfo* msgFinfos[] = {
131 sizeof( msgFinfos ) /
sizeof(
Finfo* ),
164 assert( index <
msg_.size() );
165 return reinterpret_cast< char*
>(
msg_[index] );
static char * lookupMsg(unsigned int index)
Static function for Msg access.
DataId getI1() const
Return the first DataId.
Eref firstTgt(const Eref &src) const
Element * element() const
Synonym for Id::operator()()
void addMsgAndFunc(ObjId mid, FuncId fid, BindIndex bindIndex)
Element * element() const
static const Cinfo * initCinfo()
Setup function for Element-style access to Msg fields.
Msg * copy(Id origSrc, Id newSrc, Id newTgt, FuncId fid, unsigned int b, unsigned int n) const
const unsigned int ALLDATA
Used by ObjId and Eref.
OneToAllMsg(Eref e1, Element *e2, unsigned int msgIndex)
static const Cinfo * assignmentMsgCinfo
static const Cinfo * msgCinfo
static vector< OneToAllMsg * > msg_
virtual unsigned int numData() const =0
Returns number of data entries across all nodes.
Element * e1_
Index of this Msg on the msg_ vector.
Element * element() const
ObjId findOtherEnd(ObjId end) const
Element * e2_
Element 1 attached to Msg.
void sources(vector< vector< Eref > > &v) const
const unsigned int BADINDEX
Used by ObjId and Eref.
static const Cinfo * initCinfo()
void targets(vector< vector< Eref > > &v) const
static unsigned int numMsg()
Assign the first DataId.