ckfutures: now visible via charm++.h instead of charm.h
authorRamprasad Venkataraman <ramv@illinois.edu>
Fri, 10 Jun 2011 21:47:17 +0000 (16:47 -0500)
committerRamprasad Venkataraman <ramv@illinois.edu>
Fri, 10 Jun 2011 21:55:08 +0000 (16:55 -0500)
charm.h is (was?) supposed to be include-able from C code. Although the
practical relevance of such a capability is anyone's guess. However, CkFutures
provides API that uses classes and was causing compilation issues in some
example programs. The declaration/definitions were also smeared across multiple
files obfuscating intents on where the API should be visible.

Fix by cleaning up ckfuture declaration locations and includes. This should fix
autobuild failures.

src/ck-core/charm++.h
src/ck-core/charm.h
src/ck-core/ckIgetControl.h
src/ck-core/ckfutures.h

index 9f93faebfe6f5647fb574be54bef111c0bf006ac..56537496f246018a365fce57285e2449503293b5 100644 (file)
@@ -987,7 +987,7 @@ if(CpvAccess(networkProgressCount) >=  p)  \
 #include "readonly.h"
 #include "ckarray.h"
 #include "ckstream.h"
-#include "CkFutures.decl.h"
+#include "ckfutures.h"
 #include "charisma.h"
 #include "tempo.h"
 #include "waitqd.h"
@@ -1094,8 +1094,6 @@ public:
   }
 };
 
-PUPbytes(CkFuture)
-
 #endif
 
 
index 3d026d709323318579366149d5c4f2f711d3d2c1..6104b58b12141dee91e84b8b485c86f10b3729ef 100644 (file)
@@ -312,50 +312,6 @@ extern void CkArrayManagerDeliver(int onPe,void *msg, int opts CK_MSGOPTIONAL);
 
 
 
-/*********************************************************/
-/**
-\addtogroup CkFutures
-\brief Futures--ways to block Converse threads on remote events.
-
-These routines are implemented in ckfutures.C.
-*/
-/*@{*/
-typedef int CkFutureID;
-typedef struct _CkFuture {
-  CkFutureID id;
-  int        pe;
-} CkFuture;
-extern CkFuture CkCreateFuture(void);
-extern void  CkSendToFuture(CkFuture fut, void *msg);
-extern void* CkWaitFuture(CkFuture futNum);
-extern void CkReleaseFuture(CkFuture futNum);
-extern int CkProbeFuture(CkFuture futNum);
-
-extern void* CkRemoteCall(int eIdx, void *msg,const CkChareID *chare);
-extern void* CkRemoteBranchCall(int eIdx, void *msg, CkGroupID gID, int pe);
-extern void* CkRemoteNodeBranchCall(int eIdx, void *msg, CkGroupID gID, int node);
-extern CkFutureID CkRemoteCallAsync(int eIdx, void *msg, const CkChareID *chare);
-extern CkFutureID CkRemoteBranchCallAsync(int eIdx, void *msg, CkGroupID gID, 
-                                          int pe);
-extern CkFutureID CkRemoteNodeBranchCallAsync(int eIdx, void *msg, 
-                                              CkGroupID gID, int node);
-
-extern void* CkWaitFutureID(CkFutureID futNum);
-extern void CkWaitVoidFuture(CkFutureID futNum);
-extern void CkReleaseFutureID(CkFutureID futNum);
-extern int CkProbeFutureID(CkFutureID futNum);
-extern void  CkSendToFutureID(CkFutureID futNum, void *msg, int pe);
-extern CkFutureID CkCreateAttachedFuture(void *msg);
-/* forward declare */
-struct CkArrayID;
-struct CkArrayIndex;
-extern CkFutureID CkCreateAttachedFutureSend(void *msg, int ep,
-struct CkArrayID id, CkArrayIndex idx, void(*fptr)(struct
-CkArrayID, CkArrayIndex,void*,int,int),int size CK_MSGOPTIONAL);
-/* extern CkFutureID CkCreateAttachedFutureSend(void *msg, int ep, void*,void(*fptr)(void*,void*,int,int)); */
-
-extern void *CkWaitReleaseFuture(CkFutureID futNum);
-
 /******************************************************************************
  *
  * Semaphore calls
index 79dd41d30d428491dcb07dc0d7e015687d479139..83032ffa253a78caf1f960b96ad9d7933e9dd20d 100644 (file)
@@ -1,3 +1,5 @@
+#include "ckfutures.h"
+
 #ifndef _IGET_FLOWCONTROL_H
 #define _IGET_FLOWCONTROL_H
 
@@ -233,4 +235,6 @@ private:
 
 #endif
 
+extern IGetControlClass TheIGetControlClass;
+
 #endif
index 965e2ce2fea287d456d4f6a48d582b268e0a538d..0c67aa4253d46abeca57775a01374aa4c4bbf3cc 100644 (file)
@@ -1,17 +1,51 @@
-/*****************************************************************************
- * $Source$
- * $Author$
- * $Date$
- * $Revision$
- *****************************************************************************/
-
 #ifndef _CKFUTURES_H_
 #define _CKFUTURES_H_
 
 #include "CkFutures.decl.h"
-#include "ckIgetControl.h"
-extern IGetControlClass TheIGetControlClass;
 
-extern void _futuresModuleInit(void);
+/**
+\addtogroup CkFutures
+\brief Futures--ways to block Converse threads on remote events.
+
+These routines are implemented in ckfutures.C.
+*/
+/*@{*/
+typedef int CkFutureID;
+typedef struct _CkFuture {
+  CkFutureID id;
+  int        pe;
+} CkFuture;
+PUPbytes(CkFuture)
+
+extern "C"  CkFuture CkCreateFuture(void);
+extern "C"  void  CkSendToFuture(CkFuture fut, void *msg);
+extern "C"  void* CkWaitFuture(CkFuture futNum);
+extern "C"  void CkReleaseFuture(CkFuture futNum);
+extern "C"  int CkProbeFuture(CkFuture futNum);
+
+extern "C"  void* CkRemoteCall(int eIdx, void *msg,const CkChareID *chare);
+extern "C"  void* CkRemoteBranchCall(int eIdx, void *msg, CkGroupID gID, int pe);
+extern "C"  void* CkRemoteNodeBranchCall(int eIdx, void *msg, CkGroupID gID, int node);
+extern "C"  CkFutureID CkRemoteCallAsync(int eIdx, void *msg, const CkChareID *chare);
+extern "C"  CkFutureID CkRemoteBranchCallAsync(int eIdx, void *msg, CkGroupID gID, int pe);
+extern "C"  CkFutureID CkRemoteNodeBranchCallAsync(int eIdx, void *msg, CkGroupID gID, int node);
+
+extern "C"  void* CkWaitFutureID(CkFutureID futNum);
+extern "C"  void CkWaitVoidFuture(CkFutureID futNum);
+extern "C"  void CkReleaseFutureID(CkFutureID futNum);
+extern "C"  int CkProbeFutureID(CkFutureID futNum);
+extern "C"  void  CkSendToFutureID(CkFutureID futNum, void *msg, int pe);
+extern "C"  CkFutureID CkCreateAttachedFuture(void *msg);
+
+/* forward declare */
+struct CkArrayID;
+
+extern "C"  CkFutureID CkCreateAttachedFutureSend(void *msg, int ep, struct CkArrayID id, CkArrayIndex idx,
+                          void(*fptr)(struct CkArrayID, CkArrayIndex,void*,int,int),int size CK_MSGOPTIONAL);
+/* extern "C"  CkFutureID CkCreateAttachedFutureSend(void *msg, int ep, void*,void(*fptr)(void*,void*,int,int)); */
+
+extern "C"  void *CkWaitReleaseFuture(CkFutureID futNum);
+
+extern "C"  void _futuresModuleInit(void);
 
 #endif