1 #ifndef __PROTO_SPMD_H__ 2 #define __PROTO_SPMD_H__ 4 #include "Proto_Point.H" 8 #include "implem/Proto_DisjointBoxLayout.H" 15 int linearSize(
const T& inputT);
18 void linearIn(T& a_outputT,
const void*
const inBuf);
21 void linearOut(
void*
const a_outBuf,
const T& inputT);
28 void linearIn<std::vector<Point>>(std::vector<Point>& a_outputT,
const void*
const a_inBuf)
30 std::size_t* buffer = (std::size_t*)a_inBuf;
31 a_outputT.resize(*buffer);
32 char* bufferC = (
char*)a_inBuf;
33 bufferC+=
sizeof(std::size_t);
34 memcpy(a_output_T.data(), bufferC,
sizeof(Point)*(*buffer));
38 void linearOut<std::vector<Point>>(
void*
const a_outBuf,
const std::vector<Point>& a_inputT)
40 std::size_t length = &((std::size_t*)a_outBuf);
41 length= a_inputT.size();
42 char* buffer = (
char*)a_outBuf;
43 buffer +=
sizeof(std::size_t);
44 memcpy(buffer, a_inputT.data(),
sizeof(Point)*length);
48 int linearSize<std::vector<Point>>(
const std::vector<Point>& a_input)
50 return sizeof(std::size_t)+a_input.size()*
sizeof(Point);
55 int linearSize(
const T& inputT)
57 return inputT.linearSize();
61 void linearIn(T& a_outputT,
const void*
const inBuf)
63 a_outputT.linearIn(inBuf);
67 void linearOut(
void*
const a_outBuf,
const T& inputT)
69 inputT.linearOut(a_outBuf);
75 #endif // __PROTO_SPMD_H__ Definition: Proto_Box.H:11