66 #define DEFINE_BUILTIN_TRAIT_CLASS(T) \
68 struct MessageTypeIntrinsic<T> { \
69 enum { builtin = 1 }; \
70 enum { pointer = 0 }; \
73 struct MessageTypeIntrinsic<T *> { \
74 enum { builtin = 1 }; \
75 enum { pointer = 1 }; \
78 struct MessageTypeIntrinsic<T[N]> { \
79 enum { builtin = 1 }; \
80 enum { pointer = 1 }; \
83 #define DEFINE_ALL_BUILTIN_TRAIT_CLASS(T) \
84 DEFINE_BUILTIN_TRAIT_CLASS(T) \
85 DEFINE_BUILTIN_TRAIT_CLASS(const T)
105 template <class
T,
bool builtin,
bool pointer>
177 MsgItem(
void *d,
unsigned int elems,
unsigned int totbytes,
181 if (totbytes > 0 && d != 0)
193 item = malloc(totbytes);
196 memcpy(
item, d, totbytes);
310 return (
size() == 0);
429 return putmsg((
void *)d,
sizeof(
char), strlen(d) + 1);
434 int len = s.length() + 1;
444 template <
class ForwardIterator>
457 template <
class RandomAccessIterator>
459 RandomAccessIterator beg)
486 T& val =
const_cast<T&
>(cval);
495 std::string& ncs =
const_cast<std::string&
>(s);
498 char* cstring =
new char[len];
518 template <
class OutputIterator>
563 template<
class ForwardIterator>
570 template <
class RandomAccessIterator>
572 RandomAccessIterator r)
602 template<
class OutputIterator>
609 #if ( defined(IPPL_MPIXX) || defined(IPPL_PM) )
610 #define main mpi_main
613 int mpi_main(
int,
char**);
615 #endif // IPPL_MPIXX || IPPL_PM
std::ostream & operator<<(std::ostream &os, const Attribute &attr)
Message & put(const std::vector< size_t > &indices, RandomAccessIterator beg)
Message & put(const std::string &s)
unsigned int numBytes() const
std::complex< double > dcomplex
void getMessage_iter(Message &m, OutputIterator o)
Message & get_iter(OutputIterator o)
unsigned int elemSize() const
const MsgItem & item(size_t n) const
constexpr double c
The velocity of light in m/s.
Message & putmsg(void *, int, int=0)
Message & put(const char *d)
unsigned int numElems() const
#define DEFINE_ALL_BUILTIN_TRAIT_CLASS(T)
MsgItemBuf(const MsgItemBuf &m)
Message(unsigned int numelems=8)
void useCommunicate(Communicate *c, void *d)
Message & get(const T &cval)
Message & put(const T &val)
std::vector< MsgItem > MsgItemList
MsgItem(const MsgItem &m)
Message & put(ForwardIterator beg, ForwardIterator end)
void getMessage(Message &m, T &t)
void putMessage(Message &m, const T &t)
Message & setDelete(const bool c)
Message & setCopy(const bool c)
bool willNeedDelete() const
MsgItem(void *d, unsigned int elems, unsigned int totbytes, bool needcopy, bool needdel)