doc: Add serial to list of ci file reserved words
[charm.git] / src / conv-core / conv-cpath.h
1 #ifndef _CONV_CPATH_H
2 #define _CONV_CPATH_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 /* For CmiRegisterHandler and CmiHandler */
9 #include "converse.h"
10
11 typedef struct
12 {
13   int    seqno;
14   short  creator;
15   short  startfn;
16   short  mapfn;
17   short  nsizes;
18   int    sizes[13];
19 }
20 CPath;
21
22 #define CPathArrayDimensions(a) ((a)->nsizes)
23 #define CPathArrayDimension(a,n) ((a)->sizes[n])
24
25 #define CPATH_WILD (-1)
26
27 typedef unsigned int (*CPathMapFn)(CPath *path, int *indices);
28 typedef void (*CPathReduceFn)(int nelts,void *updateme,void *inputme);
29
30 #define CPathRegisterMapper(x)   CmiRegisterHandler((CmiHandler)(x))
31 #define CPathRegisterThreadFn(x) CmiRegisterHandler((CmiHandler)(x))
32 #define CPathRegisterReducer(x)  CmiRegisterHandler((CmiHandler)(x))
33
34 void CPathMakeArray(CPath *path, int startfn, int mapfn, ...);
35 void CPathMakeThread(CPath *path, int startfn, int pe);
36
37 void  CPathSend(int key, ...);
38 void *CPathRecv(int key, ...);
39 void  CPathReduce(int key, ...);
40
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);
44
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
56
57 #ifdef __cplusplus
58 }
59 #endif
60
61 #endif