build: fix travis MPI/SMP build
[charm.git] / src / conv-core / conv-cpath.h
blobfe570488783aaad1471c82e741435983b809ce7c
1 #ifndef _CONV_CPATH_H
2 #define _CONV_CPATH_H
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
8 /* For CmiRegisterHandler and CmiHandler */
9 #include "converse.h"
11 typedef struct
13 int seqno;
14 short creator;
15 short startfn;
16 short mapfn;
17 short nsizes;
18 int sizes[13];
20 CPath;
22 #define CPathArrayDimensions(a) ((a)->nsizes)
23 #define CPathArrayDimension(a,n) ((a)->sizes[n])
25 #define CPATH_WILD (-1)
27 typedef unsigned int (*CPathMapFn)(CPath *path, int *indices);
28 typedef void (*CPathReduceFn)(int nelts,void *updateme,void *inputme);
30 #define CPathRegisterMapper(x) CmiRegisterHandler((CmiHandler)(x))
31 #define CPathRegisterThreadFn(x) CmiRegisterHandler((CmiHandler)(x))
32 #define CPathRegisterReducer(x) CmiRegisterHandler((CmiHandler)(x))
34 void CPathMakeArray(CPath *path, int startfn, int mapfn, ...);
35 void CPathMakeThread(CPath *path, int startfn, int pe);
37 void CPathSend(int key, ...);
38 void *CPathRecv(int key, ...);
39 void CPathReduce(int key, ...);
41 void CPathMsgDecodeBytes(void *msg, int *len, void *bytes);
42 void CPathMsgDecodeReduction(void *msg,int *vecsize,int *eltsize,void *bytes);
43 void CPathMsgFree(void *msg);
45 #define CPATH_ALL (-1)
46 #define CPATH_END 0
47 #define CPATH_DEST 1
48 #define CPATH_DESTELT 2
49 #define CPATH_TAG 3
50 #define CPATH_TAGS 4
51 #define CPATH_TAGVEC 5
52 #define CPATH_BYTES 6
53 #define CPATH_OVER 7
54 #define CPATH_REDUCER 8
55 #define CPATH_REDBYTES 9
57 #ifdef __cplusplus
59 #endif
61 #endif