00001 #ifndef _CKFUTURES_H_
00002 #define _CKFUTURES_H_
00003 
00004 #include "CkFutures.decl.h"
00005 
00013 typedef int CkFutureID;
00014 typedef struct _CkFuture {
00015   CkFutureID id;
00016   int        pe;
00017 } CkFuture;
00018 PUPbytes(CkFuture)
00019 
00020 
00021 struct CkArrayID;
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 CkFuture CkCreateFuture(void);
00028 void  CkSendToFuture(CkFuture fut, void *msg);
00029 void* CkWaitFuture(CkFuture futNum);
00030 void CkReleaseFuture(CkFuture futNum);
00031 int CkProbeFuture(CkFuture futNum);
00032 
00033 void* CkRemoteCall(int eIdx, void *msg,const CkChareID *chare);
00034 void* CkRemoteBranchCall(int eIdx, void *msg, CkGroupID gID, int pe);
00035 void* CkRemoteNodeBranchCall(int eIdx, void *msg, CkGroupID gID, int node);
00036 CkFutureID CkRemoteCallAsync(int eIdx, void *msg, const CkChareID *chare);
00037 CkFutureID CkRemoteBranchCallAsync(int eIdx, void *msg, CkGroupID gID, int pe);
00038 CkFutureID CkRemoteNodeBranchCallAsync(int eIdx, void *msg, CkGroupID gID, int node);
00039 
00040 void* CkWaitFutureID(CkFutureID futNum);
00041 void CkWaitVoidFuture(CkFutureID futNum);
00042 void CkReleaseFutureID(CkFutureID futNum);
00043 int CkProbeFutureID(CkFutureID futNum);
00044 void  CkSendToFutureID(CkFutureID futNum, void *msg, int pe);
00045 CkFutureID CkCreateAttachedFuture(void *msg);
00046 
00047 CkFutureID CkCreateAttachedFutureSend(void *msg, int ep, struct CkArrayID id, CkArrayIndex idx,
00048                           void(*fptr)(struct CkArrayID, CkArrayIndex,void*,int,int),int size CK_MSGOPTIONAL);
00049 
00050 
00051 void *CkWaitReleaseFuture(CkFutureID futNum);
00052 
00053 void _futuresModuleInit(void);
00054 
00055 #ifdef __cplusplus
00056 }
00057 #endif
00058 
00059 #endif