Cleanup: Replace all uses of CDECL and FDECL with CLINKAGE and FLINKAGE 85/4885/5
authorEvan Ramos <evan@hpccharm.com>
Fri, 4 Jan 2019 22:49:35 +0000 (16:49 -0600)
committerEvan Ramos <evan@hpccharm.com>
Fri, 11 Jan 2019 19:19:06 +0000 (13:19 -0600)
Change-Id: I819b937eea1ae2a0fa65d2f860e27a9cdd988788

76 files changed:
doc/faq/manual.rst
doc/faq/ports.tex
doc/tcharm/manual.rst
doc/tcharm/manual.tex
src/ck-core/charm-api.h
src/ck-core/charmf.C
src/ck-core/init.h
src/ck-cp/controlPoints.C
src/ck-cp/controlPoints.h
src/ck-ldb/lbdbf.C
src/ck-perf/tracef.C
src/libs/ck-libs/ParFUM/ParFUM.C
src/libs/ck-libs/ParFUM/ParFUM.h
src/libs/ck-libs/ParFUM/ParFUM_internals.h
src/libs/ck-libs/ParFUM/adapt_if.C
src/libs/ck-libs/ParFUM/compat.C
src/libs/ck-libs/ParFUM/compat_driver.c
src/libs/ck-libs/ParFUM/compat_fdriver.c
src/libs/ck-libs/ParFUM/compat_finit.c
src/libs/ck-libs/ParFUM/compat_init.c
src/libs/ck-libs/ParFUM/main.C
src/libs/ck-libs/ParFUM/mesh.C
src/libs/ck-libs/ParFUM/mesh_adjacency.C
src/libs/ck-libs/ParFUM/mesh_feature_detect.C
src/libs/ck-libs/ParFUM/mesh_modify.C
src/libs/ck-libs/ParFUM/symmetries.C
src/libs/ck-libs/TMRC2D/femrefine.C
src/libs/ck-libs/TMRC2D/refine.C
src/libs/ck-libs/ampi/ampi.C
src/libs/ck-libs/ampi/ampiOneSided.C
src/libs/ck-libs/ampi/ampif.C
src/libs/ck-libs/ampi/compat_ampifm.C
src/libs/ck-libs/ampi/compat_ampifus.C
src/libs/ck-libs/ampi/compat_ampim.C
src/libs/ck-libs/ampi/compat_ampius.C
src/libs/ck-libs/armci/armci_api.C
src/libs/ck-libs/collide/threadCollide.C
src/libs/ck-libs/fem/compat_driver.c
src/libs/ck-libs/fem/compat_fdriver.c
src/libs/ck-libs/fem/compat_finit.c
src/libs/ck-libs/fem/compat_init.c
src/libs/ck-libs/fem/fem.C
src/libs/ck-libs/fem/fem_adapt_if.C
src/libs/ck-libs/fem/fem_adapt_if.h
src/libs/ck-libs/fem/fem_compat.C
src/libs/ck-libs/fem/fem_mesh.C
src/libs/ck-libs/fem/fem_mesh.h
src/libs/ck-libs/fem/fem_mesh_adjacency.C
src/libs/ck-libs/fem/fem_mesh_modify.C
src/libs/ck-libs/fem/femmain.C
src/libs/ck-libs/fem/symmetries.C
src/libs/ck-libs/idxl/idxl.C
src/libs/ck-libs/idxl/idxl_api.C
src/libs/ck-libs/ifem/cg.C
src/libs/ck-libs/ifem/ifem.C
src/libs/ck-libs/ifem/ilsi.C
src/libs/ck-libs/ifem/ilsi.h
src/libs/ck-libs/mblock/compat_driver.c
src/libs/ck-libs/mblock/compat_fdriver.c
src/libs/ck-libs/mblock/mblock.C
src/libs/ck-libs/netfem/netfem.C
src/libs/ck-libs/tcharm/compat_funs.c
src/libs/ck-libs/tcharm/compat_fus.c
src/libs/ck-libs/tcharm/compat_regmm.c
src/libs/ck-libs/tcharm/compat_uns.c
src/libs/ck-libs/tcharm/compat_us.c
src/libs/ck-libs/tcharm/tcharm.C
src/libs/ck-libs/tcharm/tcharm_impl.h
src/libs/ck-libs/tmr/femrefine.C
src/libs/ck-libs/tmr/refine.C
src/util/ckstandalone.C
src/util/pup_c.C
tests/ampi/privatization/test.h
tests/fem/megafem/ctests.h
tests/fem/megafem/ftests_fallback.C
tests/fem/megafem/pgm.C

index 34eb185621e4b69605e983ab920cb50cfe39b0f7..caf0b64b512aec4632558648e4c101d0a4a51239 100644 (file)
@@ -1458,13 +1458,13 @@ that expands to a properly mangled fortran routine name. You pass the
 FTN_NAME macro two copies of the routine name: once in all uppercase,
 and again in all lowercase. The FTN_NAME macro then picks the
 appropriate name and applies any needed underscores. “charm-api.h” also
-includes a macro “FDECL” that makes the symbol linkable from fortran (in
+includes a macro “FLINKAGE” that makes the symbol linkable from fortran (in
 C++, this expands to extern “C”), so a complete Fortran subroutine looks
 like in C or C++:
 
 ::
 
-   FDECL void FTN_NAME(FOO,foo)(void);
+   FLINKAGE void FTN_NAME(FOO,foo)(void);
 
 This same syntax can be used for C/C++ routines called from fortran, or
 for calling fortran routines from C/C++. We strongly recommend using
@@ -1515,7 +1515,7 @@ C:
 ::
 
       /* C/C++ */
-      FDECL void FTN_NAME(BAR,bar)(int *i) {
+      FLINKAGE void FTN_NAME(BAR,bar)(int *i) {
           x=*i;
       }
 
@@ -1538,7 +1538,7 @@ C:
 ::
 
       /* C/C++ */
-      FDECL void FTN_NAME(BAR,bar)(int *arr) {
+      FLINKAGE void FTN_NAME(BAR,bar)(int *arr) {
           x=arr[0];
       }
 
@@ -1577,7 +1577,7 @@ C:
 ::
 
       /* C/C++ */
-      FDECL void FTN_NAME(BAR2,bar2)(int *arr,int *len1p,int *len2p) {
+      FLINKAGE void FTN_NAME(BAR2,bar2)(int *arr,int *len1p,int *len2p) {
           int i,j; int len1=*len1p, len2=*len2p;
           for (j=0;j<len2;j++)
           for (i=0;i<len1;i++)
@@ -1600,7 +1600,7 @@ C:
 ::
 
       /* C/C++ */
-      FDECL void FTN_NAME(BARS,bars)(char *str,int *arg,int strlen) {
+      FLINKAGE void FTN_NAME(BARS,bars)(char *str,int *arg,int strlen) {
           char *s=(char *)malloc(strlen+1);
           memcpy(s,str,strlen);
           s[strlen]=0; /* nul-terminate string */
index 49602a9768de58af573321e5f3b74af24e04f2f9..b5e934024aea0e0069339dbbf78604a6e6af571a 100644 (file)
@@ -155,11 +155,11 @@ You pass the FTN\_NAME macro
 two copies of the routine name: once in all uppercase, and again 
 in all lowercase.
 The FTN\_NAME macro then picks the appropriate name and applies any
-needed underscores.  ``charm-api.h'' also includes a macro ``FDECL''
+needed underscores.  ``charm-api.h'' also includes a macro ``FLINKAGE''
 that makes the symbol linkable from fortran (in C++, this expands
 to extern ``C''), so a complete Fortran subroutine looks like in C or C++:
 \begin{alltt}
-FDECL void FTN\_NAME(FOO,foo)(void);
+FLINKAGE void FTN\_NAME(FOO,foo)(void);
 \end{alltt}
 
 This same syntax can be used for C/C++ routines called from
@@ -212,7 +212,7 @@ SUBROUTINE BAR(i)
 END SUBROUTINE
 
 /* C/C++ */
-FDECL void FTN\_NAME(BAR,bar)(int *i) \{
+FLINKAGE void FTN\_NAME(BAR,bar)(int *i) \{
     x=*i;
 \}
 \end{alltt}
@@ -234,7 +234,7 @@ SUBROUTINE BAR(arr)
 END SUBROUTINE
 
 /* C/C++ */
-FDECL void FTN\_NAME(BAR,bar)(int *arr) \{
+FLINKAGE void FTN\_NAME(BAR,bar)(int *arr) \{
     x=arr[0];
 \}
 \end{alltt}
@@ -270,7 +270,7 @@ SUBROUTINE BAR2(arr,len1,len2)
 END SUBROUTINE
 
 /* C/C++ */
-FDECL void FTN\_NAME(BAR2,bar2)(int *arr,int *len1p,int *len2p) \{
+FLINKAGE void FTN\_NAME(BAR2,bar2)(int *arr,int *len1p,int *len2p) \{
     int i,j; int len1=*len1p, len2=*len2p;
     for (j=0;j<len2;j++)
     for (i=0;i<len1;i++)
@@ -292,7 +292,7 @@ SUBROUTINE CALL\_BARS(arg)
 END SUBROUTINE
 
 /* C/C++ */
-FDECL void FTN\_NAME(BARS,bars)(char *str,int *arg,int strlen) \{
+FLINKAGE void FTN\_NAME(BARS,bars)(char *str,int *arg,int strlen) \{
     char *s=(char *)malloc(strlen+1);
     memcpy(s,str,strlen);
     s[strlen]=0; /* nul-terminate string */
index 9d65ab2022109596ff6bb6550699b1d5b2b801b0..b9d88e9f0bf13765b4516e62804d5d36fcceb599 100644 (file)
@@ -660,7 +660,7 @@ The overall scheme for writing a TCharm-based library "Foo" is:
    be added to the start of every user-callable method. In addition to
    tracing, these disable isomalloc allocation.
 
-   The charm-api.h macros CDECL, FDECL and FTN_NAME should be used to
+   The charm-api.h macros CLINKAGE, FLINKAGE and FTN_NAME should be used to
    provide both C and FORTRAN versions of each API call. You should use
    the "MPI capitalization standard", where the library name is all
    caps, followed by a capitalized first word, with all subsequent words
@@ -680,14 +680,14 @@ The overall scheme for writing a TCharm-based library "Foo" is:
 
    ::
 
-      CDECL void FOO_Communicate(int x, double y, int * arr) {
+      CLINKAGE void FOO_Communicate(int x, double y, int * arr) {
          TCHARM_API_TRACE("FOO_Communicate", "foo"); //2nd parameter is the name of the library
          FooChunk *f = CtvAccess(_fooptr);
          f->doCommunicate(x, y, arr);
       }
 
       //In fortran, everything is passed via pointers
-      FDECL void FTN_NAME(FOO_COMMUNICATE, foo_communicate)
+      FLINKAGE void FTN_NAME(FOO_COMMUNICATE, foo_communicate)
            (int *x, double *y, int *arr)
       {
          TCHARM_API_TRACE("FOO_COMMUNICATE", "foo");
index b0050c7b07e5c7823dac7c5de007b209049fc7f2..b0373f5c48c0f5d058a49ac43b5a56253aae88b0 100644 (file)
@@ -645,7 +645,7 @@ with the newly created library. Calls to TCHARM\_API\_TRACE macro must be
 added to the start of every user-callable method. In addition to tracing,
 these disable isomalloc allocation. 
 
-The charm-api.h macros CDECL, FDECL and
+The charm-api.h macros CLINKAGE, FLINKAGE and
 FTN\_NAME should be used to provide both C and FORTRAN versions of each 
 API call.  You should use the "MPI capitalization standard", where the library
 name is all caps, followed by a capitalized first word, with all subsequent 
@@ -663,14 +663,14 @@ int index will need to be decremented before use, or incremented before
 a return.
 
 \begin{alltt}
-CDECL void FOO\_Communicate(int x, double y, int * arr) \{
+CLINKAGE void FOO\_Communicate(int x, double y, int * arr) \{
    TCHARM\_API\_TRACE("FOO\_Communicate", "foo"); //2nd parameter is the name of the library
    FooChunk *f = CtvAccess(\_fooptr);
    f->doCommunicate(x, y, arr);
 \}
 
 //In fortran, everything is passed via pointers
-FDECL void FTN\_NAME(FOO_COMMUNICATE, foo_communicate)
+FLINKAGE void FTN\_NAME(FOO_COMMUNICATE, foo_communicate)
      (int *x, double *y, int *arr)
 \{
    TCHARM\_API\_TRACE("FOO_COMMUNICATE", "foo");
index f76ef393ac217e7d30c5b3d648ffad9b994a30f0..0b31554d58c201c06b9f98691c8157ae07d6961c 100644 (file)
@@ -8,18 +8,20 @@ libraries written in Charm for other languages.
 
 #include "conv-config.h" /* for CMK_FORTRAN symbols */
 
+/** Used to define a C language entry point*/
 #ifdef __cplusplus
 #  define CLINKAGE extern "C"
 #else
 #  define CLINKAGE /*empty*/
 #endif
 
-/** Used to define a "C" entry point*/
+/** Used to define a Fortran-callable routine*/
+#define FLINKAGE CLINKAGE
+
+/* Deprecated linkage aliases */
 #undef CDECL /*<- used by Microsoft Visual C++*/
 #define CDECL CLINKAGE
-
-/** Used to define a Fortran-callable routine*/
-#define FDECL CLINKAGE
+#define FDECL FLINKAGE
 
 /** Fortran name mangling:
 */
@@ -49,7 +51,7 @@ libraries written in Charm for other languages.
  *  @param c_args Arguments to pass to C routine (e.g., "*idx-1")
  */
 #define FORTRAN_AS_C(CAPITALNAME,Cname,lowername, routine_args,c_args) \
-FDECL void \
+FLINKAGE void \
 FTN_NAME(CAPITALNAME,lowername) routine_args { \
        Cname c_args;\
 }
@@ -58,7 +60,7 @@ FTN_NAME(CAPITALNAME,lowername) routine_args { \
  * Like FORTRAN_AS_C, but with a return type as the first parameter.
  */
 #define FORTRAN_AS_C_RETURN(returnType, CAPITALNAME,Cname,lowername, routine_args,c_args) \
-FDECL returnType \
+FLINKAGE returnType \
 FTN_NAME(CAPITALNAME,lowername) routine_args { \
        return Cname c_args;\
 }
index 22e0fb7d06d0cb0e0046a3b19eaed7a77e2493ac..0a2e247672faaadcd32fdadebb78b4384360925f 100644 (file)
@@ -110,11 +110,11 @@ extern "C" void FTN_NAME(CKPRINTF, ckprintf)(const char *format, ...)
   va_end(args);
 }
 
-FDECL int FTN_NAME(CHARM_IARGC,charm_iargc)(void) {
+FLINKAGE int FTN_NAME(CHARM_IARGC,charm_iargc)(void) {
   return CkGetArgc()-1;
 }
 
-FDECL void FTN_NAME(CHARM_GETARG,charm_getarg)
+FLINKAGE void FTN_NAME(CHARM_GETARG,charm_getarg)
         (int *i_p,char *dest,int destLen)
 {
   int i=*i_p;
@@ -127,80 +127,80 @@ FDECL void FTN_NAME(CHARM_GETARG,charm_getarg)
 
 // memory functions
 
-FDECL CmiInt8 FTN_NAME(CMIMEMORYUSAGE, cmimemoryusage) ()
+FLINKAGE CmiInt8 FTN_NAME(CMIMEMORYUSAGE, cmimemoryusage) ()
 {
   CmiInt8 mem = CmiMemoryUsage();
   return mem;
 }
 
-FDECL CmiInt8 FTN_NAME(CMIMAXMEMORYUSAGE, cmimaxmemoryusage) ()
+FLINKAGE CmiInt8 FTN_NAME(CMIMAXMEMORYUSAGE, cmimaxmemoryusage) ()
 {
   return CmiMaxMemoryUsage();
 }
 
-FDECL CmiFloat8 FTN_NAME(CMIWALLTIMER, cmiwalltimer) ()
+FLINKAGE CmiFloat8 FTN_NAME(CMIWALLTIMER, cmiwalltimer) ()
 {
   return CmiWallTimer();
 }
 
-FDECL CmiFloat8 FTN_NAME(CKWALLTIMER, ckwalltimer) ()
+FLINKAGE CmiFloat8 FTN_NAME(CKWALLTIMER, ckwalltimer) ()
 {
   return CkWallTimer();
 }
 
-FDECL CmiFloat8 FTN_NAME(CMICPUTIMER, cmicputimer) ()
+FLINKAGE CmiFloat8 FTN_NAME(CMICPUTIMER, cmicputimer) ()
 {
   return CmiCpuTimer();
 }
 
-FDECL CmiFloat8 FTN_NAME(CKCPUTIMER, ckcputimer) ()
+FLINKAGE CmiFloat8 FTN_NAME(CKCPUTIMER, ckcputimer) ()
 {
   return CkCpuTimer();
 }
 
-FDECL void FTN_NAME(CMIDISABLEISOMALLOC, cmidisableisomalloc) ()
+FLINKAGE void FTN_NAME(CMIDISABLEISOMALLOC, cmidisableisomalloc) ()
 {
   CmiDisableIsomalloc();
 }
 
-FDECL void FTN_NAME(CMIENABLEISOMALLOC, cmienableisomalloc) ()
+FLINKAGE void FTN_NAME(CMIENABLEISOMALLOC, cmienableisomalloc) ()
 {
   CmiEnableIsomalloc();
 }
 
-FDECL void FTN_NAME(CMIDISABLETLS, cmidisabletls) ()
+FLINKAGE void FTN_NAME(CMIDISABLETLS, cmidisabletls) ()
 {
   CmiDisableTLS();
 }
 
-FDECL void FTN_NAME(CMIENABLETLS, cmienabletls) ()
+FLINKAGE void FTN_NAME(CMIENABLETLS, cmienabletls) ()
 {
   CmiEnableTLS();
 }
 
-FDECL void FTN_NAME(CMIMEMORYCHECK, cmimemorycheck) ()
+FLINKAGE void FTN_NAME(CMIMEMORYCHECK, cmimemorycheck) ()
 {
   CmiMemoryCheck();
 }
 
 // cktiming utility
 
-FDECL void FTN_NAME(INITBIGSIMTRACE, initbigsimtrace)(int *outputParams, int *outputtiming)
+FLINKAGE void FTN_NAME(INITBIGSIMTRACE, initbigsimtrace)(int *outputParams, int *outputtiming)
 {
   initBigSimTrace(*outputParams, *outputtiming);
 }
 
-FDECL void FTN_NAME(FINALIZEBIGSIMTRACE, finalizebigsimtrace)()
+FLINKAGE void FTN_NAME(FINALIZEBIGSIMTRACE, finalizebigsimtrace)()
 {
   finalizeBigSimTrace();
 }
 
-FDECL void FTN_NAME(STARTTRACEBIGSIM, starttracebigsim)()
+FLINKAGE void FTN_NAME(STARTTRACEBIGSIM, starttracebigsim)()
 {
   startTraceBigSim();
 }
 
-FDECL void FTN_NAME(ENDTRACEBIGSIM1, endtracebigsim1)(char *eventName, int *stepno, double *p1, int len)
+FLINKAGE void FTN_NAME(ENDTRACEBIGSIM1, endtracebigsim1)(char *eventName, int *stepno, double *p1, int len)
 {
   char str[128];
   strncpy(str,eventName, len);
@@ -209,7 +209,7 @@ FDECL void FTN_NAME(ENDTRACEBIGSIM1, endtracebigsim1)(char *eventName, int *step
 }
 
 
-FDECL void FTN_NAME(ENDTRACEBIGSIM2, endtracebigsim2)(char *eventName, int *stepno, double *p1, double *p2, int len)
+FLINKAGE void FTN_NAME(ENDTRACEBIGSIM2, endtracebigsim2)(char *eventName, int *stepno, double *p1, double *p2, int len)
 {
   char str[128];
   strncpy(str,eventName, len);
@@ -217,7 +217,7 @@ FDECL void FTN_NAME(ENDTRACEBIGSIM2, endtracebigsim2)(char *eventName, int *step
   endTraceBigSim(str, *stepno, *p1, *p2);
 }
 
-FDECL void FTN_NAME(ENDTRACEBIGSIM3, endtracebigsim3)(char *eventName, int *stepno, double *p1, double *p2, double *p3, int len)
+FLINKAGE void FTN_NAME(ENDTRACEBIGSIM3, endtracebigsim3)(char *eventName, int *stepno, double *p1, double *p2, double *p3, int len)
 {
   // printf("%d %f %f %f\n", *stepno, *p1, *p2, *p3);
   char str[128];
@@ -226,7 +226,7 @@ FDECL void FTN_NAME(ENDTRACEBIGSIM3, endtracebigsim3)(char *eventName, int *step
   endTraceBigSim(str, *stepno, *p1, *p2, *p3);
 }
 
-FDECL void FTN_NAME(ENDTRACEBIGSIM4, endtracebigsim4)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, int len)
+FLINKAGE void FTN_NAME(ENDTRACEBIGSIM4, endtracebigsim4)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, int len)
 {
   // printf("%d %f %f %f\n", *stepno, *p1, *p2, *p3, *p4);
   char str[128];
@@ -235,7 +235,7 @@ FDECL void FTN_NAME(ENDTRACEBIGSIM4, endtracebigsim4)(char *eventName, int *step
   endTraceBigSim(str, *stepno, *p1, *p2, *p3, *p4);
 }
 
-FDECL void FTN_NAME(ENDTRACEBIGSIM5, endtracebigsim5)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, double *p5, int len)
+FLINKAGE void FTN_NAME(ENDTRACEBIGSIM5, endtracebigsim5)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, double *p5, int len)
 {
   // printf("%d %f %f %f\n", *stepno, *p1, *p2, *p3, *p4, *p5);
   char str[128];
@@ -244,7 +244,7 @@ FDECL void FTN_NAME(ENDTRACEBIGSIM5, endtracebigsim5)(char *eventName, int *step
   endTraceBigSim(str, *stepno, *p1, *p2, *p3, *p4, *p5);
 }
 
-FDECL void FTN_NAME(ENDTRACEBIGSIM6, endtracebigsim6)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, double *p5,  double *p6, int len)
+FLINKAGE void FTN_NAME(ENDTRACEBIGSIM6, endtracebigsim6)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, double *p5,  double *p6, int len)
 {
   // printf("%d %f %f %f\n", *stepno, *p1, *p2, *p3, *p4, *p5, *p6);
   char str[128];
@@ -253,7 +253,7 @@ FDECL void FTN_NAME(ENDTRACEBIGSIM6, endtracebigsim6)(char *eventName, int *step
   endTraceBigSim(str, *stepno, *p1, *p2, *p3, *p4, *p5, *p6);
 }
 
-FDECL void FTN_NAME(ENDTRACEBIGSIM7, endtracebigsim7)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, double *p5,  double *p6, double *p7, int len)
+FLINKAGE void FTN_NAME(ENDTRACEBIGSIM7, endtracebigsim7)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, double *p5,  double *p6, double *p7, int len)
 {
   // printf("%d %f %f %f\n", *stepno, *p1, *p2, *p3, *p4, *p5, *p6, *p7);
   char str[128];
@@ -262,7 +262,7 @@ FDECL void FTN_NAME(ENDTRACEBIGSIM7, endtracebigsim7)(char *eventName, int *step
   endTraceBigSim(str, *stepno, *p1, *p2, *p3, *p4, *p5, *p6, *p7);
 }
 
-FDECL void FTN_NAME(ENDTRACEBIGSIM8, endtracebigsim8)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, double *p5,  double *p6, double *p7, double *p8, int len)
+FLINKAGE void FTN_NAME(ENDTRACEBIGSIM8, endtracebigsim8)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, double *p5,  double *p6, double *p7, double *p8, int len)
 {
   // printf("%d %f %f %f\n", *stepno, *p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8);
   char str[128];
@@ -271,7 +271,7 @@ FDECL void FTN_NAME(ENDTRACEBIGSIM8, endtracebigsim8)(char *eventName, int *step
   endTraceBigSim(str, *stepno, *p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8);
 }
 
-FDECL void FTN_NAME(ENDTRACEBIGSIM9, endtracebigsim9)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, double *p5,  double *p6, double *p7, double *p8, double *p9, int len)
+FLINKAGE void FTN_NAME(ENDTRACEBIGSIM9, endtracebigsim9)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, double *p5,  double *p6, double *p7, double *p8, double *p9, int len)
 {
   // printf("%d %f %f %f\n", *stepno, *p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8, *p9);
   char str[128];
@@ -280,7 +280,7 @@ FDECL void FTN_NAME(ENDTRACEBIGSIM9, endtracebigsim9)(char *eventName, int *step
   endTraceBigSim(str, *stepno, *p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8, *p9);
 }
 
-FDECL void FTN_NAME(ENDTRACEBIGSIM10, endtracebigsim10)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, double *p5,  double *p6, double *p7, double *p8, double *p9, double *p10, int len)
+FLINKAGE void FTN_NAME(ENDTRACEBIGSIM10, endtracebigsim10)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, double *p5,  double *p6, double *p7, double *p8, double *p9, double *p10, int len)
 {
   // printf("%d %f %f %f\n", *stepno, *p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8, *p9, *p10);
   char str[128];
@@ -289,7 +289,7 @@ FDECL void FTN_NAME(ENDTRACEBIGSIM10, endtracebigsim10)(char *eventName, int *st
   endTraceBigSim(str, *stepno, *p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8, *p9, *p10);
 }
 
-FDECL void FTN_NAME(ENDTRACEBIGSIM11, endtracebigsim11)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, double *p5,  double *p6, double *p7, double *p8, double *p9, double *p10, double *p11, int len)
+FLINKAGE void FTN_NAME(ENDTRACEBIGSIM11, endtracebigsim11)(char *eventName, int *stepno, double *p1, double *p2, double *p3, double *p4, double *p5,  double *p6, double *p7, double *p8, double *p9, double *p10, double *p11, int len)
 {
   // printf("%d %f %f %f\n", *stepno, *p1, *p2, *p3, *p4, *p5, *p6, *p7);
   char str[128];
index dafc3ec3bef7d095a6665a7c0d82dff131c26c19..5aee992100a4b1b2fd04ab4c0b617d36ccd189fc 100644 (file)
@@ -161,7 +161,7 @@ extern void _registerCommandLineOpt(const char* opt);
 extern void _initCharm(int argc, char **argv);
 
 extern "C" int charm_main(int argc, char **argv);
-FDECL void FTN_NAME(CHARM_MAIN_FORTRAN_WRAPPER, charm_main_fortran_wrapper)(int *argc, char **argv);
+FLINKAGE void FTN_NAME(CHARM_MAIN_FORTRAN_WRAPPER, charm_main_fortran_wrapper)(int *argc, char **argv);
 
 /** This routine registers the user's main module.  It is normally
     generated by the translator, but for FEM and AMPI may actually be 
index 8bb8aaa538129b29bccff2441f41888b66aac475..3e7b885149e70ec398de21202c666a93f5592570 100644 (file)
@@ -1027,7 +1027,7 @@ void gotoNextPhase(){
   controlPointManagerProxy.ckLocalBranch()->gotoNextPhase();
 }
 
-FDECL void FTN_NAME(GOTONEXTPHASE,gotonextphase)()
+FLINKAGE void FTN_NAME(GOTONEXTPHASE,gotonextphase)()
 {
   gotoNextPhase();
 }
@@ -1211,13 +1211,13 @@ void controlPointTimingStamp() {
   controlPointManagerProxy.ckLocalBranch()->setTiming(duration);
 }
 
-FDECL void FTN_NAME(CONTROLPOINTTIMINGSTAMP,controlpointtimingstamp)()
+FLINKAGE void FTN_NAME(CONTROLPOINTTIMINGSTAMP,controlpointtimingstamp)()
 {
   controlPointTimingStamp();
 }
 
 
-FDECL void FTN_NAME(SETFRAMEWORKADVANCEPHASEF,setframeworkadvancephasef)(CMK_TYPEDEF_INT4 *value) 
+FLINKAGE void FTN_NAME(SETFRAMEWORKADVANCEPHASEF,setframeworkadvancephasef)(CMK_TYPEDEF_INT4 *value)
 {
   setFrameworkAdvancePhase(*value);
 }
@@ -2225,7 +2225,7 @@ int controlPoint(const char *name, int lb, int ub){
 }
 
 
-FDECL int FTN_NAME(CONTROLPOINT, controlpoint)(CMK_TYPEDEF_INT4 *lb, CMK_TYPEDEF_INT4 *ub){
+FLINKAGE int FTN_NAME(CONTROLPOINT, controlpoint)(CMK_TYPEDEF_INT4 *lb, CMK_TYPEDEF_INT4 *ub){
   CkAssert(CkMyPe() == 0);
   return controlPoint("FortranCP", *lb, *ub);
 }
index 7ce542870a34818fa03c4323326c4973c1503695..908e1398106ee56592583b0b6c61453d7f230fd3 100644 (file)
@@ -71,14 +71,14 @@ void registerControlPointTiming(double time);
 
 /// Called once each application step. Can be used instead of registerControlPointTiming()
 void controlPointTimingStamp();
-FDECL void FTN_NAME(CONTROLPOINTTIMINGSTAMP,controlpointtimingstamp)();
+FLINKAGE void FTN_NAME(CONTROLPOINTTIMINGSTAMP,controlpointtimingstamp)();
 
 
 /// The application specifies that it is ready to proceed to a new set of control point values.
 /// This should be called after registerControlPointTiming()
 /// This should be called before calling controlPoint()
 void gotoNextPhase();
-FDECL void FTN_NAME(GOTONEXTPHASE,gotonextphase)();
+FLINKAGE void FTN_NAME(GOTONEXTPHASE,gotonextphase)();
 
 /// Return an integral power of 2 between c1 and c2
 /// The value returned will likely change between subsequent invocations
@@ -90,7 +90,7 @@ int controlPoint(const char *name, int lb, int ub);
 
 /// A fortran callable one. I couldn't figure out how to pass a string from fortran to C++ yet
 /// So far fortran can only have one control point
-FDECL int FTN_NAME(CONTROLPOINT,controlpoint)(CMK_TYPEDEF_INT4 *lb, CMK_TYPEDEF_INT4 *ub);
+FLINKAGE int FTN_NAME(CONTROLPOINT,controlpoint)(CMK_TYPEDEF_INT4 *lb, CMK_TYPEDEF_INT4 *ub);
 
 
 /// Return an integer from the provided vector of values
index 79892f8652a53d7743c031d1744ea542e6505f1d..917d276f1d772000f82817ed04f1964ad5b6236d 100644 (file)
 #define flbturninstrumentoff  FTN_NAME(FLBTURNINSTRUMENTOFF, flbturninstrumentoff)
 #define flbturninstrumenton   FTN_NAME(FLBTURNINSTRUMENTON, flbturninstrumenton)
 
-FDECL void flbturninstrumenton()
+FLINKAGE void flbturninstrumenton()
 {
   LBTurnInstrumentOn();
 }
 
-FDECL void flbturninstrumentoff()
+FLINKAGE void flbturninstrumentoff()
 {
   LBTurnInstrumentOff();
 }
index 3d3fb904d6b1867ecccef5b360a050b3542894c5..4e2a7bd6922d96b3b314038b77d91de13764518c 100644 (file)
@@ -25,7 +25,7 @@ static char * FortrantoCString(char *x,int len){
 }
 
 
-FDECL {
+FLINKAGE {
 
 #define ftracebegin              FTN_NAME(FTRACEBEGIN, ftracebegin)
 #define ftraceend               FTN_NAME(FTRACEEND, ftraceend)
@@ -98,5 +98,5 @@ void fbgprintf(char *str, int len)
 }
 #endif
 
-}  // FDECL
+}  // FLINKAGE
 
index 2510f96aa3ac5f9c709ab751d048412eaa3e0597..abe75294e255393189c44eae312a412dd0d33ca0 100644 (file)
@@ -53,7 +53,7 @@ void FEM_Abort(const char *caller,const char *sprintf_msg,
 // This is our TCharm global ID:
 enum {FEM_globalID=33};
 
-CDECL void pupFEM_Chunk(pup_er cp) {
+CLINKAGE void pupFEM_Chunk(pup_er cp) {
        PUP::er &p=*(PUP::er *)cp;
        FEM_chunk *c=(FEM_chunk *)TCHARM_Get_global(FEM_globalID);
        if (c==NULL) {
@@ -70,7 +70,7 @@ FEM_chunk *FEM_chunk::get(const char *caller) {
        return c;
 }
 
-CDECL void FEM_Init(FEM_Comm_t defaultComm)
+CLINKAGE void FEM_Init(FEM_Comm_t defaultComm)
 {
        IDXL_Init(defaultComm);
        if (!TCHARM_Get_global(FEM_globalID)) {
@@ -104,7 +104,7 @@ void FEM_Mesh_list::bad(int l,int bad_code,const char *caller) const {
                FEM_Abort(caller,"Re-used a deleted FEM Mesh ID %d",l);
 }
 
-CDECL int 
+CLINKAGE int
 FEM_Mesh_allocate(void) /* build new mesh */  
 {
        const char *caller="FEM_Mesh_allocate";FEMAPI(caller);
@@ -127,7 +127,7 @@ inline T *clonePointerViaPup(T *old) {
        return nu;
 }
 
-CDECL int
+CLINKAGE int
 FEM_Mesh_copy(int fem_mesh) {
        const char *caller="FEM_Mesh_copy";FEMAPI(caller);
        FEM_chunk *c=FEM_chunk::get(caller);
@@ -137,7 +137,7 @@ FORTRAN_AS_C_RETURN(int,
        FEM_MESH_COPY,FEM_Mesh_copy,fem_mesh_copy, (int *m),(*m))
 
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_deallocate(int fem_mesh) /* delete this local mesh */
 {
        if (fem_mesh!=-1) {
@@ -149,14 +149,14 @@ FEM_Mesh_deallocate(int fem_mesh) /* delete this local mesh */
 FORTRAN_AS_C(FEM_MESH_DEALLOCATE,FEM_Mesh_deallocate,fem_mesh_deallocate, (int *m),(*m))
 
 /* Mesh I/O */
-CDECL int 
+CLINKAGE int
 FEM_Mesh_read(const char *prefix,int partNo,int nParts) /* read parallel mesh from file */
 {
        const char *caller="FEM_Mesh_read";FEMAPI(caller);
        FEM_chunk *c=FEM_chunk::get(caller);
        return c->meshes.put(FEM_readMesh(prefix,partNo,nParts));
 }
-FDECL int
+FLINKAGE int
 FTN_NAME(FEM_MESH_READ,fem_mesh_read)(const char *n,int *partNo,int *nParts,int len) {
        char *s=new char[len+1]; strncpy(s,n,len); s[len]=(char)0;
        int ret=FEM_Mesh_read(s,*partNo,*nParts);
@@ -164,14 +164,14 @@ FTN_NAME(FEM_MESH_READ,fem_mesh_read)(const char *n,int *partNo,int *nParts,int
        return ret;
 }
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_write(int fem_mesh,const char *prefix,int partNo,int nParts) /* write parallel mesh to files */
 {
        const char *caller="FEM_Mesh_write";FEMAPI(caller);
        FEM_chunk *c=FEM_chunk::get(caller);
        FEM_writeMesh(c->meshes.lookup(fem_mesh,caller),prefix,partNo,nParts);
 }
-FDECL void
+FLINKAGE void
 FTN_NAME(FEM_MESH_WRITE,fem_mesh_write)(int *m,const char *n,int *partNo,int *nParts,int len) {
        char *s=new char[len+1]; strncpy(s,n,len); s[len]=(char)0;
        FEM_Mesh_write(*m,s,*partNo,*nParts);
@@ -179,7 +179,7 @@ FTN_NAME(FEM_MESH_WRITE,fem_mesh_write)(int *m,const char *n,int *partNo,int *nP
 }
 
 /* Mesh assembly/disassembly */
-CDECL int 
+CLINKAGE int
 FEM_Mesh_assemble(int nParts,const int *srcMeshes) {
        const char *caller="FEM_Mesh_assemble";FEMAPI(caller);
        FEM_chunk *c=FEM_chunk::get(caller);
@@ -246,7 +246,7 @@ public:
        }
 };
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_partition(int fem_mesh,int nParts,int *destMeshes) {
        const char *caller="FEM_Mesh_partition"; FEMAPI(caller);
        FEM_chunk *c=FEM_chunk::get(caller);
@@ -264,7 +264,7 @@ FORTRAN_AS_C(FEM_MESH_PARTITION,FEM_Mesh_partition,fem_mesh_partition,
 
 /* Mesh communication */
 
-CDECL int 
+CLINKAGE int
 FEM_Mesh_recv(int fromRank,int tag,FEM_Comm_t comm_context)
 {
        const char *caller="FEM_Mesh_recv";FEMAPI(caller);
@@ -278,7 +278,7 @@ FEM_Mesh_recv(int fromRank,int tag,FEM_Comm_t comm_context)
 FORTRAN_AS_C_RETURN(int,FEM_MESH_RECV,FEM_Mesh_recv,fem_mesh_recv, 
        (int *from,int *tag,int *comm),(*from,*tag,*comm))
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_send(int fem_mesh,int toRank,int tag,FEM_Comm_t comm_context)
 {
        const char *caller="FEM_Mesh_send";FEMAPI(caller);
@@ -290,7 +290,7 @@ FORTRAN_AS_C(FEM_MESH_SEND,FEM_Mesh_send,fem_mesh_send,
        (int *mesh,int *to,int *tag,int *comm),(*mesh,*to,*tag,*comm))
 
 
-CDECL int 
+CLINKAGE int
 FEM_Mesh_reduce(int fem_mesh,int masterRank,FEM_Comm_t comm_context)
 {
        int tag=89374;
@@ -323,7 +323,7 @@ FORTRAN_AS_C_RETURN(int,FEM_MESH_REDUCE,FEM_Mesh_reduce,fem_mesh_reduce,
 
 extern int FEM_Mesh_Parallel_broadcast(int fem_mesh,int masterRank,FEM_Comm_t comm_context);
 
-CDECL int 
+CLINKAGE int
 FEM_Mesh_broadcast(int fem_mesh,int masterRank,FEM_Comm_t comm_context)
 {
     int myRank;
@@ -383,7 +383,7 @@ FORTRAN_AS_C_RETURN(int,FEM_MESH_BROADCAST,FEM_Mesh_broadcast,fem_mesh_broadcast
        (int *mesh,int *rank,int *comm),(*mesh,*rank,*comm))
 
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_copy_globalno(int src_mesh,int dest_mesh)
 {
        const char *caller="FEM_Mesh_copy_globalno";FEMAPI(caller);
@@ -393,7 +393,7 @@ FEM_Mesh_copy_globalno(int src_mesh,int dest_mesh)
 }
 
 /* Tiny accessors */
-CDECL int FEM_Mesh_default_read(void)  /* return default fem_mesh used for read (get) calls below */
+CLINKAGE int FEM_Mesh_default_read(void)  /* return default fem_mesh used for read (get) calls below */
 {
        return FEM_chunk::get("FEM_Mesh_default_read")->default_read;
 }
@@ -401,7 +401,7 @@ FORTRAN_AS_C_RETURN(int,
        FEM_MESH_DEFAULT_READ,FEM_Mesh_default_read,fem_mesh_default_read,
        (void),())
 
-CDECL int FEM_Mesh_default_write(void) /* return default fem_mesh used for write (set) calls below */
+CLINKAGE int FEM_Mesh_default_write(void) /* return default fem_mesh used for write (set) calls below */
 {
        return FEM_chunk::get("FEM_Mesh_default_write")->default_write;
 }
@@ -409,13 +409,13 @@ FORTRAN_AS_C_RETURN(int,
        FEM_MESH_DEFAULT_WRITE,FEM_Mesh_default_write,fem_mesh_default_write,
        (void),())
 
-CDECL void FEM_Mesh_set_default_read(int fem_mesh)
+CLINKAGE void FEM_Mesh_set_default_read(int fem_mesh)
 {
        FEM_chunk::get("FEM_Mesh_set_default_read")->default_read=fem_mesh;
 }
 FORTRAN_AS_C(FEM_MESH_SET_DEFAULT_READ,FEM_Mesh_set_default_read,fem_mesh_set_default_read,
        (int *m),(*m))
-CDECL void FEM_Mesh_set_default_write(int fem_mesh)
+CLINKAGE void FEM_Mesh_set_default_write(int fem_mesh)
 {
        FEM_chunk::get("FEM_Mesh_set_default_write")->default_write=fem_mesh;
 }
@@ -456,21 +456,21 @@ FEM_Mesh *FEM_Mesh_lookup(int fem_mesh, const char *caller) {
   return FEM_chunk::get(caller)->lookup(fem_mesh,caller);
 }
 
-CDECL void FEM_Mesh_Become_Setting(int fem_mesh) {
+CLINKAGE void FEM_Mesh_Become_Setting(int fem_mesh) {
   FEM_Mesh *meshP = FEM_Mesh_lookup(fem_mesh,"driver");
   meshP->becomeSetting();
 }
-FDECL void FTN_NAME(FEM_MESH_BECOME_SETTING,fem_mesh_become_setting)
+FLINKAGE void FTN_NAME(FEM_MESH_BECOME_SETTING,fem_mesh_become_setting)
   (int *mesh)
 {
   FEM_Mesh_Become_Setting(*mesh);
 }
 
-CDECL void FEM_Mesh_Become_Getting(int fem_mesh) {
+CLINKAGE void FEM_Mesh_Become_Getting(int fem_mesh) {
   FEM_Mesh *meshP = FEM_Mesh_lookup(fem_mesh,"driver");
   meshP->becomeGetting();
 }
-FDECL void FTN_NAME(FEM_MESH_BECOME_GETTING,fem_mesh_become_getting)
+FLINKAGE void FTN_NAME(FEM_MESH_BECOME_GETTING,fem_mesh_become_getting)
   (int *mesh)
 {
   FEM_Mesh_Become_Getting(*mesh);
@@ -479,13 +479,13 @@ FDECL void FTN_NAME(FEM_MESH_BECOME_GETTING,fem_mesh_become_getting)
 /****** Custom Partitioning API *******/
 
 //C bindings:
-CDECL void FEM_Set_partition(int *elem2chunk) {
+CLINKAGE void FEM_Set_partition(int *elem2chunk) {
        FEMAPI("FEM_Set_partition");
        FEM_curPartition().setPartition(elem2chunk,setMesh()->nElems(),0);
 }
 
 //Fortran bindings:
-FDECL void FTN_NAME(FEM_SET_PARTITION,fem_set_partition)
+FLINKAGE void FTN_NAME(FEM_SET_PARTITION,fem_set_partition)
        (int *elem2chunk) 
 {
        FEMAPI("FEM_Set_partition");
@@ -645,52 +645,52 @@ FEM_chunk::readField(int fid, void *nodes, const char *fname)
 
 /******************************* C Bindings **********************************/
 
-CDECL int FEM_Register(void *_ud,FEM_PupFn _pup_ud)
+CLINKAGE int FEM_Register(void *_ud,FEM_PupFn _pup_ud)
 {
   FEMAPI("FEM_Register");
   return TCHARM_Register(_ud,_pup_ud);
 }
 
-CDECL void *FEM_Get_userdata(int n)
+CLINKAGE void *FEM_Get_userdata(int n)
 {
   FEMAPI("FEM_Get_userdata");
   return TCHARM_Get_userdata(n);
 }
 
-CDECL void FEM_Barrier(void) {TCHARM_Barrier();}
-FDECL void FTN_NAME(FEM_BARRIER,fem_barrier)(void) {TCHARM_Barrier();}
+CLINKAGE void FEM_Barrier(void) {TCHARM_Barrier();}
+FLINKAGE void FTN_NAME(FEM_BARRIER,fem_barrier)(void) {TCHARM_Barrier();}
 
-CDECL void
+CLINKAGE void
 FEM_Migrate(void)
 {
   TCHARM_Migrate();
 }
 
-CDECL void
+CLINKAGE void
 FEM_Async_Migrate(void)
 {
   TCHARM_Async_Migrate();
 }
 
-CDECL void 
+CLINKAGE void
 FEM_Done(void)
 {
   TCHARM_Done(0);
 }
 
-CDECL int 
+CLINKAGE int
 FEM_Create_simple_field(int base_type, int vec_len)
 {
   return IDXL_Layout_create(base_type,vec_len);
 }
 
-CDECL int 
+CLINKAGE int
 FEM_Create_field(int base_type, int vec_len, int init_offset, int distance)
 {
   return IDXL_Layout_offset(base_type,vec_len,init_offset,distance,0);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Update_field(int fid, void *nodes)
 {
   int mesh=FEM_Mesh_default_read();
@@ -698,46 +698,46 @@ FEM_Update_field(int fid, void *nodes)
   IDXL_Comm_sendsum(0,list,fid,nodes);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Reduce_field(int fid, const void *nodes, void *outbuf, int op)
 {
   const char *caller="FEM_Reduce_field"; FEMAPI(caller);
   FEM_chunk::get(caller)->reduce_field(fid, nodes, outbuf, op);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Reduce(int fid, const void *inbuf, void *outbuf, int op)
 {
   const char *caller="FEM_Reduce";FEMAPI(caller);
   FEM_chunk::get(caller)->reduce(fid, inbuf, outbuf, op);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Read_field(int fid, void *nodes, const char *fname)
 {
   const char *caller="FEM_Read_field";FEMAPI(caller);
   FEM_chunk::get(caller)->readField(fid, nodes, fname);
 }
 
-CDECL int
+CLINKAGE int
 FEM_My_partition(void)
 {
   return TCHARM_Element();
 }
 
-CDECL int
+CLINKAGE int
 FEM_Num_partitions(void)
 {
   return TCHARM_Num_elements();
 }
 
-CDECL double
+CLINKAGE double
 FEM_Timer(void)
 {
   return TCHARM_Wall_timer();
 }
 
-CDECL void 
+CLINKAGE void
 FEM_Print(const char *str)
 {
   const char *caller="FEM_Print"; FEMAPI(caller);
@@ -751,33 +751,33 @@ static void do_print_partition(int fem_mesh,int idxBase) {
   cptr->print(fem_mesh,idxBase);
 }
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_print(int fem_mesh)
 {
   do_print_partition(fem_mesh,0);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Print_partition(void) {
   do_print_partition(FEM_Mesh_default_read(),0);
 }
 
-CDECL int FEM_Get_comm_partners(void)
+CLINKAGE int FEM_Get_comm_partners(void)
 {
        const char *caller="FEM_Get_Comm_Partners"; FEMAPI(caller);
        return FEM_chunk::get(caller)->getComm().size();
 }
-CDECL int FEM_Get_comm_partner(int partnerNo)
+CLINKAGE int FEM_Get_comm_partner(int partnerNo)
 {
        const char *caller="FEM_Get_Comm_Partner"; FEMAPI(caller);
        return FEM_chunk::get(caller)->getComm().getLocalList(partnerNo).getDest();
 }
-CDECL int FEM_Get_comm_count(int partnerNo)
+CLINKAGE int FEM_Get_comm_count(int partnerNo)
 {
        const char *caller="FEM_Get_Comm_Count"; FEMAPI(caller);
        return FEM_chunk::get(caller)->getComm().getLocalList(partnerNo).size();
 }
-CDECL void FEM_Get_comm_nodes(int partnerNo,int *nodeNos)
+CLINKAGE void FEM_Get_comm_nodes(int partnerNo,int *nodeNos)
 {
        const char *caller="FEM_Get_comm_nodes"; FEMAPI(caller);
        const int *nNo=FEM_chunk::get(caller)->getComm().getLocalList(partnerNo).getVec();
@@ -788,54 +788,54 @@ CDECL void FEM_Get_comm_nodes(int partnerNo,int *nodeNos)
 
 /************************ Fortran Bindings *********************************/
 
-FDECL int FTN_NAME(FEM_REGISTER,fem_register)
+FLINKAGE int FTN_NAME(FEM_REGISTER,fem_register)
   (void *userData,FEM_PupFn _pup_ud)
 { 
   return FEM_Register(userData,_pup_ud);
 }
 
-FDECL void FTN_NAME(FEM_MIGRATE,fem_migrate)
+FLINKAGE void FTN_NAME(FEM_MIGRATE,fem_migrate)
   (void)
 {
   FEM_Migrate();
 }
 
-FDECL void FTN_NAME(FEM_ASYNC_MIGRATE,fem_async_migrate)
+FLINKAGE void FTN_NAME(FEM_ASYNC_MIGRATE,fem_async_migrate)
   (void)
 {
   FEM_Async_Migrate();
 }
 
-FDECL int FTN_NAME(FEM_CREATE_SIMPLE_FIELD,fem_create_simple_field)
+FLINKAGE int FTN_NAME(FEM_CREATE_SIMPLE_FIELD,fem_create_simple_field)
   (int *bt, int *vl)
 {
   return FEM_Create_simple_field(*bt, *vl);
 }
-FDECL int FTN_NAME(FEM_CREATE_FIELD,fem_create_field)
+FLINKAGE int FTN_NAME(FEM_CREATE_FIELD,fem_create_field)
   (int *bt, int *vl, int *io, int *d)
 {
   return FEM_Create_field(*bt, *vl, *io, *d);
 }
 
-FDECL void FTN_NAME(FEM_UPDATE_FIELD,fem_update_field)
+FLINKAGE void FTN_NAME(FEM_UPDATE_FIELD,fem_update_field)
   (int *fid, void *nodes)
 {
   FEM_Update_field(*fid, nodes);
 }
 
-FDECL void  FTN_NAME(FEM_REDUCE_FIELD,fem_reduce_field)
+FLINKAGE void  FTN_NAME(FEM_REDUCE_FIELD,fem_reduce_field)
   (int *fid, void *nodes, void *outbuf, int *op)
 {
   FEM_Reduce_field(*fid, nodes, outbuf, *op);
 }
 
-FDECL void FTN_NAME(FEM_REDUCE,fem_reduce)
+FLINKAGE void FTN_NAME(FEM_REDUCE,fem_reduce)
   (int *fid, void *inbuf, void *outbuf, int *op)
 {
   FEM_Reduce(*fid, inbuf, outbuf, *op);
 }
 
-FDECL void FTN_NAME(FEM_READ_FIELD,fem_read_field)
+FLINKAGE void FTN_NAME(FEM_READ_FIELD,fem_read_field)
   (int *fid, void *nodes, char *fname, int len)
 {
   char *tmp = new char[len+1]; CHK(tmp);
@@ -845,32 +845,32 @@ FDECL void FTN_NAME(FEM_READ_FIELD,fem_read_field)
   delete[] tmp;
 }
 
-FDECL int FTN_NAME(FEM_MY_PARTITION,fem_my_partition)
+FLINKAGE int FTN_NAME(FEM_MY_PARTITION,fem_my_partition)
   (void)
 {
   return FEM_My_partition()+1;
 }
 
-FDECL int FTN_NAME(FEM_NUM_PARTITIONS,fem_num_partitions)
+FLINKAGE int FTN_NAME(FEM_NUM_PARTITIONS,fem_num_partitions)
   (void)
 {
   return FEM_Num_partitions();
 }
 
-FDECL double FTN_NAME(FEM_TIMER,fem_timer)
+FLINKAGE double FTN_NAME(FEM_TIMER,fem_timer)
   (void)
 {
   return FEM_Timer();
 }
 
 // Utility functions for Fortran
-FDECL int FTN_NAME(FOFFSETOF,foffsetof)
+FLINKAGE int FTN_NAME(FOFFSETOF,foffsetof)
   (void *first, void *second)
 {
   return (int)((char *)second - (char*)first);
 }
 
-FDECL void FTN_NAME(FEM_PRINT,fem_print)
+FLINKAGE void FTN_NAME(FEM_PRINT,fem_print)
   (char *str, int len)
 {
   char *tmpstr = new char[len+1]; CHK(tmpstr);
@@ -880,37 +880,37 @@ FDECL void FTN_NAME(FEM_PRINT,fem_print)
   delete[] tmpstr;
 }
 
-FDECL void FTN_NAME(FEM_MESH_PRINT,fem_mesh_print)
+FLINKAGE void FTN_NAME(FEM_MESH_PRINT,fem_mesh_print)
   (int *m)
 {
   do_print_partition(*m,1);
 }
-FDECL void FTN_NAME(FEM_PRINT_PARTITION,fem_print_partition)(void) {
+FLINKAGE void FTN_NAME(FEM_PRINT_PARTITION,fem_print_partition)(void) {
   do_print_partition(FEM_Mesh_default_read(),0);
 }
 
-FDECL void FTN_NAME(FEM_DONE,fem_done)
+FLINKAGE void FTN_NAME(FEM_DONE,fem_done)
   (void)
 {
   FEM_Done();
 }
 
-FDECL int FTN_NAME(FEM_GET_COMM_PARTNERS,fem_get_comm_partners)
+FLINKAGE int FTN_NAME(FEM_GET_COMM_PARTNERS,fem_get_comm_partners)
        (void)
 {
        return FEM_Get_comm_partners();
 }
-FDECL int FTN_NAME(FEM_GET_COMM_PARTNER,fem_get_comm_partner)
+FLINKAGE int FTN_NAME(FEM_GET_COMM_PARTNER,fem_get_comm_partner)
        (int *partnerNo)
 {
        return FEM_Get_comm_partner(*partnerNo-1)+1;
 }
-FDECL int FTN_NAME(FEM_GET_COMM_COUNT,fem_get_comm_count)
+FLINKAGE int FTN_NAME(FEM_GET_COMM_COUNT,fem_get_comm_count)
        (int *partnerNo)
 {
        return FEM_Get_comm_count(*partnerNo-1);
 }
-FDECL void FTN_NAME(FEM_GET_COMM_NODES,fem_get_comm_nodes)
+FLINKAGE void FTN_NAME(FEM_GET_COMM_NODES,fem_get_comm_nodes)
        (int *pNo,int *nodeNos)
 {
        const char *caller="FEM_GET_COMM_NODES"; FEMAPI(caller);
@@ -960,7 +960,7 @@ FEM_Ghost_Stencil::FEM_Ghost_Stencil(int elType_, int n_,bool addNodes_,
        }
 }
 
-CDECL void FEM_Add_ghost_stencil_type(int elType,int nElts,int addNodes,
+CLINKAGE void FEM_Add_ghost_stencil_type(int elType,int nElts,int addNodes,
        const int *ends,const int *adj2)
 {
        FEMAPI("FEM_Add_ghost_stencil_type");
@@ -968,7 +968,7 @@ CDECL void FEM_Add_ghost_stencil_type(int elType,int nElts,int addNodes,
                elType, nElts, addNodes==1, ends, adj2, 0);
        FEM_curPartition().addGhostStencil(s);
 }
-FDECL void FTN_NAME(FEM_ADD_GHOST_STENCIL_TYPE,fem_add_ghost_stencil_type)(
+FLINKAGE void FTN_NAME(FEM_ADD_GHOST_STENCIL_TYPE,fem_add_ghost_stencil_type)(
        int *elType,int *nElts,int *addNodes,
        const int *ends,const int *adj2)
 {
@@ -997,7 +997,7 @@ inline int globalElem2elType(const FEM_Mesh *m,int globalElem) {
  using one big array, instead of one array per element type.
  This one-piece format is more convenient for most users.
 */
-CDECL void FEM_Add_ghost_stencil(int nElts,int addNodes,
+CLINKAGE void FEM_Add_ghost_stencil(int nElts,int addNodes,
        const int *ends,const int *adj)
 {
        FEMAPI("FEM_Add_ghost_stencil");
@@ -1034,7 +1034,7 @@ CDECL void FEM_Add_ghost_stencil(int nElts,int addNodes,
        }
        FEM_curPartition().markGhostStencilLayer();
 }
-FDECL void FTN_NAME(FEM_ADD_GHOST_STENCIL,fem_add_ghost_stencil)(
+FLINKAGE void FTN_NAME(FEM_ADD_GHOST_STENCIL,fem_add_ghost_stencil)(
        int *nElts,int *addNodes,
        const int *ends,int *adj)
 {
@@ -1046,14 +1046,14 @@ FDECL void FTN_NAME(FEM_ADD_GHOST_STENCIL,fem_add_ghost_stencil)(
 }
 
 /******************** Ghost Layers *********************/
-CDECL void FEM_Add_ghost_layer(int nodesPerTuple,int doAddNodes)
+CLINKAGE void FEM_Add_ghost_layer(int nodesPerTuple,int doAddNodes)
 {
        FEMAPI("FEM_Add_ghost_layer");
        FEM_Ghost_Layer *cur=FEM_curPartition().addLayer();
        cur->nodesPerTuple=nodesPerTuple;
        cur->addNodes=(doAddNodes!=0);
 }
-FDECL void FTN_NAME(FEM_ADD_GHOST_LAYER,fem_add_ghost_layer)
+FLINKAGE void FTN_NAME(FEM_ADD_GHOST_LAYER,fem_add_ghost_layer)
        (int *nodesPerTuple,int *doAddNodes)
 { FEM_Add_ghost_layer(*nodesPerTuple,*doAddNodes); }
 
@@ -1069,13 +1069,13 @@ static void add_ghost_elem(int elType,int tuplesPerElem,const int *elem2tuple,in
                          tuplesPerElem*cur->nodesPerTuple,idxBase);
 }
 
-CDECL void FEM_Add_ghost_elem(int elType,int tuplesPerElem,const int *elem2tuple)
+CLINKAGE void FEM_Add_ghost_elem(int elType,int tuplesPerElem,const int *elem2tuple)
 { add_ghost_elem(elType,tuplesPerElem,elem2tuple,0); }
-FDECL void FTN_NAME(FEM_ADD_GHOST_ELEM,fem_add_ghost_elem)
+FLINKAGE void FTN_NAME(FEM_ADD_GHOST_ELEM,fem_add_ghost_elem)
        (int *FelType,int *FtuplesPerElem,const int *elem2tuple)
 { add_ghost_elem(*FelType,*FtuplesPerElem,elem2tuple,1); }
 
-CDECL void FEM_Update_ghost_field(int fid, int elType, void *v_data)
+CLINKAGE void FEM_Update_ghost_field(int fid, int elType, void *v_data)
 {
        int mesh=FEM_Mesh_default_read();
        int entity;
@@ -1090,7 +1090,7 @@ CDECL void FEM_Update_ghost_field(int fid, int elType, void *v_data)
        IDXL_Comm_recv(comm,src,fid,&data[nReal*bytesPerRec]); //Begin recv'ing ghosts after all reals
        IDXL_Comm_wait(comm);
 }
-FDECL void FTN_NAME(FEM_UPDATE_GHOST_FIELD,fem_update_ghost_field)
+FLINKAGE void FTN_NAME(FEM_UPDATE_GHOST_FIELD,fem_update_ghost_field)
        (int *fid, int *elemType, void *data)
 {
        int fElType=*elemType;
@@ -1169,26 +1169,26 @@ void FEM_chunk::exchangeGhostLists(int elemType,
 }
 
 //List exchange API
-CDECL void FEM_Exchange_ghost_lists(int elemType,int nIdx,const int *localIdx)
+CLINKAGE void FEM_Exchange_ghost_lists(int elemType,int nIdx,const int *localIdx)
 {
        const char *caller="FEM_Exchange_Ghost_Lists"; FEMAPI(caller);
        FEM_chunk::get(caller)->exchangeGhostLists(elemType,nIdx,localIdx,0);
 }
-FDECL void FTN_NAME(FEM_EXCHANGE_GHOST_LISTS,fem_exchange_ghost_lists)
+FLINKAGE void FTN_NAME(FEM_EXCHANGE_GHOST_LISTS,fem_exchange_ghost_lists)
        (int *elemType,int *nIdx,const int *localIdx)
 {
        const char *caller="FEM_exchange_ghost_lists"; FEMAPI(caller);
        FEM_chunk::get(caller)->exchangeGhostLists(*elemType,*nIdx,localIdx,1);
 }
-CDECL int FEM_Get_ghost_list_length(void) 
+CLINKAGE int FEM_Get_ghost_list_length(void)
 {
        const char *caller="FEM_Get_Ghost_List_Length"; FEMAPI(caller);
        return FEM_chunk::get(caller)->getList().size();
 }
-FDECL int FTN_NAME(FEM_GET_GHOST_LIST_LENGTH,fem_get_ghost_list_length)(void)
+FLINKAGE int FTN_NAME(FEM_GET_GHOST_LIST_LENGTH,fem_get_ghost_list_length)(void)
 { return FEM_Get_ghost_list_length();}
 
-CDECL void FEM_Get_ghost_list(int *dest)
+CLINKAGE void FEM_Get_ghost_list(int *dest)
 {
        const char *caller="FEM_Get_Ghost_List"; FEMAPI(caller);
        int i,len=FEM_Get_ghost_list_length();
@@ -1196,7 +1196,7 @@ CDECL void FEM_Get_ghost_list(int *dest)
        for (i=0;i<len;i++) dest[i]=src[i];
        FEM_chunk::get(caller)->emptyList();
 }
-FDECL void FTN_NAME(FEM_GET_GHOST_LIST,fem_get_ghost_list)
+FLINKAGE void FTN_NAME(FEM_GET_GHOST_LIST,fem_get_ghost_list)
        (int *dest)
 {
        const char *caller="FEM_get_ghost_list"; FEMAPI(caller);
@@ -1267,7 +1267,7 @@ static CkVec<int> getRoccomPconn(int fem_mesh,int *ghost_len,const int *paneFmCh
        return pconn;
 }
 
-CDECL void FEM_Get_roccom_pconn_size(int fem_mesh,int *total_len,int *ghost_len)
+CLINKAGE void FEM_Get_roccom_pconn_size(int fem_mesh,int *total_len,int *ghost_len)
 {
        CkVec<int> pconn=getRoccomPconn(fem_mesh,ghost_len,NULL);
        *total_len=pconn.size();
@@ -1276,7 +1276,7 @@ FORTRAN_AS_C(FEM_GET_ROCCOM_PCONN_SIZE,FEM_Get_roccom_pconn_size,fem_get_roccom_
         (int *mesh,int *tl,int *gl), (*mesh,tl,gl)
 )
 
-CDECL void FEM_Get_roccom_pconn(int fem_mesh,const int *paneFmChunk,int *dest)
+CLINKAGE void FEM_Get_roccom_pconn(int fem_mesh,const int *paneFmChunk,int *dest)
 {
        CkVec<int> pconn=getRoccomPconn(fem_mesh,NULL,paneFmChunk);
        for (unsigned int i=0;i<pconn.size();i++)
@@ -1308,7 +1308,7 @@ const int* makeIDXLside(const int *src,const int *paneFmChunk,IDXL_Side &s) {
        return src;
 }
 
-CDECL void FEM_Set_roccom_pconn(int fem_mesh,const int *paneFmChunk,const int *src,int total_len,int ghost_len)
+CLINKAGE void FEM_Set_roccom_pconn(int fem_mesh,const int *paneFmChunk,const int *src,int total_len,int ghost_len)
 {
        const char *caller="FEM_Set_roccom_pconn"; FEMAPI(caller);
        FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
@@ -1339,7 +1339,7 @@ int commState(int entityNo,const IDXL_Side &s)
     Based on shared node communication list, compute 
     FEM_NODE FEM_GLOBALNO and FEM_NODE_PRIMARY
 */
-CDECL void FEM_Make_node_globalno(int fem_mesh,FEM_Comm_t comm_context)
+CLINKAGE void FEM_Make_node_globalno(int fem_mesh,FEM_Comm_t comm_context)
 {
        const char *caller="FEM_Make_node_globalno"; FEMAPI(caller);
        FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
@@ -1490,7 +1490,7 @@ FEM_chunk::print(int fem_mesh,int idxBase)
  *   TODO: Make this work with multiple types of faces for a single element
  */
 
-CDECL void FEM_Add_elem2face_tuples(int fem_mesh, int elem_type, int nodesPerTuple, int tuplesPerElem,const int *elem2tuple) 
+CLINKAGE void FEM_Add_elem2face_tuples(int fem_mesh, int elem_type, int nodesPerTuple, int tuplesPerElem,const int *elem2tuple)
 {
        FEMAPI("FEM_Add_elem2face_tuples");
        FEM_Mesh *m = FEM_Mesh_lookup(fem_mesh,"FEM_Add_elem2face_tuples");
index 0806fa304468dab25085b4b21b8f312c126b9708..5a8c9e86f5a63c7bd1e61471c3e5be15222f0b56 100644 (file)
@@ -457,56 +457,56 @@ Author: Isaac Dooley 11-09-2005
 /// User functions for adaptivity
 
 void FEM_ADAPT_Init(int meshID);
-FDECL void FTN_NAME(FEM_ADAPT_INIT,fem_adapt_init)(int *meshID);
+FLINKAGE void FTN_NAME(FEM_ADAPT_INIT,fem_adapt_init)(int *meshID);
 
 
 void FEM_ADAPT_Refine(int meshID, int qm, int method, double factor, double *sizes);
-FDECL void FTN_NAME(FEM_ADAPT_REFINE,fem_adapt_refine)(int* meshID, 
+FLINKAGE void FTN_NAME(FEM_ADAPT_REFINE,fem_adapt_refine)(int* meshID,
         int *qm, int *method, double *factor, double *sizes);
 
 
 void FEM_ADAPT_Coarsen(int meshID, int qm, int method, double factor, 
         double *sizes);
-FDECL void FTN_NAME(FEM_ADAPT_COARSEN,fem_adapt_coarsen)(int* meshID, 
+FLINKAGE void FTN_NAME(FEM_ADAPT_COARSEN,fem_adapt_coarsen)(int* meshID,
         int *qm, int *method, double *factor, double *sizes);
 
 void FEM_ADAPT_AdaptMesh(int meshID, int qm, int method, double factor, double *sizes);
-FDECL void FTN_NAME(FEM_ADAPT_ADAPTMESH,fem_adapt_adaptmesh)(int* meshID, 
+FLINKAGE void FTN_NAME(FEM_ADAPT_ADAPTMESH,fem_adapt_adaptmesh)(int* meshID,
         int *qm, int *method, double *factor, double *sizes);
 
 void FEM_ADAPT_SetElementSizeField(int meshID, int elem, double size);
-FDECL void FTN_NAME(FEM_ADAPT_SETELEMENTSIZEFIELD,fem_adapt_setelementsizefield)(int *meshID, int *elem, double *size);
+FLINKAGE void FTN_NAME(FEM_ADAPT_SETELEMENTSIZEFIELD,fem_adapt_setelementsizefield)(int *meshID, int *elem, double *size);
 
 
 void FEM_ADAPT_SetElementsSizeField(int meshID, double *sizes);
-FDECL void FTN_NAME(FEM_ADAPT_SETELEMENTSSIZEFIELD,fem_adapt_setelementssizefield)(int *meshID, double *sizes);
+FLINKAGE void FTN_NAME(FEM_ADAPT_SETELEMENTSSIZEFIELD,fem_adapt_setelementssizefield)(int *meshID, double *sizes);
 
 
 void FEM_ADAPT_SetReferenceMesh(int meshID);
-FDECL void FTN_NAME(FEM_ADAPT_SETREFERENCEMESH, fem_adapt_setreferencemesh)(int* meshID);
+FLINKAGE void FTN_NAME(FEM_ADAPT_SETREFERENCEMESH, fem_adapt_setreferencemesh)(int* meshID);
 
 
 void FEM_ADAPT_GradateMesh(int meshID, double smoothness);
-FDECL void FTN_NAME(FEM_ADAPT_GRADATEMESH, fem_adapt_gradatemesh)(int* meshID, double* smoothness);
+FLINKAGE void FTN_NAME(FEM_ADAPT_GRADATEMESH, fem_adapt_gradatemesh)(int* meshID, double* smoothness);
 
 
 void FEM_ADAPT_TestMesh(int meshID);
-FDECL void FTN_NAME(FEM_ADAPT_TESTMESH, fem_adapt_testmesh)(int* meshID);
+FLINKAGE void FTN_NAME(FEM_ADAPT_TESTMESH, fem_adapt_testmesh)(int* meshID);
 
 
 int FEM_ADAPT_SimpleRefineMesh(int meshID, double targetA, double xmin=0.0, double ymin=0.0, double xmax=1.0, double ymax=1.0);
-FDECL void FTN_NAME(FEM_ADAPT_SIMPLEREFINEMESH, fem_adapt_simplerefinemesh)(int* meshID, double* targetA, double* xmin, double* ymin, double* xmax, double* ymax);
+FLINKAGE void FTN_NAME(FEM_ADAPT_SIMPLEREFINEMESH, fem_adapt_simplerefinemesh)(int* meshID, double* targetA, double* xmin, double* ymin, double* xmax, double* ymax);
 
 
 int FEM_ADAPT_SimpleCoarsenMesh(int meshID, double targetA, double xmin=0.0, double ymin=0.0, double xmax=1.0, double ymax=1.0);
-FDECL void FTN_NAME(FEM_ADAPT_SIMPLECOARSENMESH, fem_adapt_simplecoarsenmesh)(int* meshID, double* targetA, double* xmin, double* ymin, double* xmax, double* ymax);
+FLINKAGE void FTN_NAME(FEM_ADAPT_SIMPLECOARSENMESH, fem_adapt_simplecoarsenmesh)(int* meshID, double* targetA, double* xmin, double* ymin, double* xmax, double* ymax);
 
   // End Adaptivity interface
 
 
 /// User functions for parfum initialization
 void ParFUM_SA_Init(int meshId);
-FDECL void FTN_NAME(PARFUM_SA_INIT,parfum_sa_init)(int *meshId);
+FLINKAGE void FTN_NAME(PARFUM_SA_INIT,parfum_sa_init)(int *meshId);
 
 #ifdef __cplusplus
 }
index d751c646cd2dd6627ee40bac0ed16155f54a7d88..bc93cee1781a5aede3e6ff3feb891ce389f377bd 100644 (file)
@@ -366,12 +366,12 @@ class AllocTable2d : public BasicTable2d<T> {
 /// Return the human-readable version of this entity code, like "FEM_NODE".
 ///  storage, which must be at least 80 bytes long, is used for
 ///  non-static names, like the user tag "FEM_ELEM+2".
-CDECL const char *FEM_Get_entity_name(int entity,char *storage);
+CLINKAGE const char *FEM_Get_entity_name(int entity,char *storage);
 
 /// Return the human-readable version of this attribute code, like "FEM_CONN".
 ///  storage, which must be at least 80 bytes long, is used for
 ///  non-static names, like the user tag "FEM_DATA+7".
-CDECL const char *FEM_Get_attr_name(int attr,char *storage);
+CLINKAGE const char *FEM_Get_attr_name(int attr,char *storage);
 
 
 ///A user-visible 2D table attached to a FEM_Entity
index f0db6f7980b6f80f5fce665e4ecd59871dc3a236..9eafb5ea7fc7f19d9ad87bf8030ff73c2f5718d6 100644 (file)
@@ -8,7 +8,7 @@
 #include "ParFUM_internals.h"
 
 
-CDECL void FEM_REF_INIT(int mesh) {
+CLINKAGE void FEM_REF_INIT(int mesh) {
   CkArrayID femRefId;
   int cid;
   int size;
@@ -47,7 +47,7 @@ void FEM_ADAPT_Init(int meshID) {
   CtvAccess(_adaptAlgs) = meshP->getfmMM()->getfmAdaptAlgs();
   CtvAccess(_adaptAlgs)->FEM_Adapt_Algs_Init(FEM_DATA+0, FEM_BOUNDARY,2); //dimension=2
 }
-FDECL void FTN_NAME(FEM_ADAPT_INIT,fem_adapt_init)(int *meshID)
+FLINKAGE void FTN_NAME(FEM_ADAPT_INIT,fem_adapt_init)(int *meshID)
 {
   FEM_ADAPT_Init(*meshID);
 }
@@ -59,7 +59,7 @@ void FEM_ADAPT_Refine(int meshID, int qm, int method, double factor,
     FEM_Mesh* mesh = FEM_Mesh_lookup(meshID, "FEM_ADAPT_Refine");
     mesh->getfmMM()->getfmAdaptAlgs()->FEM_Refine(qm, method, factor, sizes);
 }
-FDECL void FTN_NAME(FEM_ADAPT_REFINE,fem_adapt_refine)(int* meshID, 
+FLINKAGE void FTN_NAME(FEM_ADAPT_REFINE,fem_adapt_refine)(int* meshID,
         int *qm, int *method, double *factor, double *sizes)
 {
   FEM_ADAPT_Refine(*meshID, *qm, *method, *factor, sizes);
@@ -71,7 +71,7 @@ FDECL void FTN_NAME(FEM_ADAPT_REFINE,fem_adapt_refine)(int* meshID,
     FEM_Mesh* mesh = FEM_Mesh_lookup(meshID, "FEM_ADAPT_Coarsen");
     mesh->getfmMM()->getfmAdaptAlgs()->FEM_Coarsen(qm, method, factor, sizes);
 }
-FDECL  void FTN_NAME(FEM_ADAPT_COARSEN,fem_adapt_coarsen)(int* meshID, 
+FLINKAGE  void FTN_NAME(FEM_ADAPT_COARSEN,fem_adapt_coarsen)(int* meshID,
         int *qm, int *method, double *factor, double *sizes)
 {
   FEM_ADAPT_Coarsen(*meshID, *qm, *method, *factor, sizes);
@@ -83,7 +83,7 @@ void FEM_ADAPT_AdaptMesh(int meshID, int qm, int method, double factor,
     FEM_Mesh* mesh = FEM_Mesh_lookup(meshID, "FEM_ADAPT_AdaptMesh");
     mesh->getfmMM()->getfmAdaptAlgs()->FEM_AdaptMesh(qm, method, factor, sizes);
 }
-FDECL void FTN_NAME(FEM_ADAPT_ADAPTMESH,fem_adapt_adaptmesh)(int* meshID, 
+FLINKAGE void FTN_NAME(FEM_ADAPT_ADAPTMESH,fem_adapt_adaptmesh)(int* meshID,
         int *qm, int *method, double *factor, double *sizes)
 {
   FEM_ADAPT_AdaptMesh(*meshID, *qm, *method, *factor, sizes);
@@ -94,7 +94,7 @@ FDECL void FTN_NAME(FEM_ADAPT_ADAPTMESH,fem_adapt_adaptmesh)(int* meshID,
   FEM_Mesh *meshP = FEM_Mesh_lookup(meshID, "FEM_ADAPT_SetElementSizeField");
   meshP->elem[0].setMeshSizing(elem, size);
 }
-FDECL  void FTN_NAME(FEM_ADAPT_SETELEMENTSIZEFIELD,fem_adapt_setelementsizefield)(int *meshID, int *elem, double *size)
+FLINKAGE  void FTN_NAME(FEM_ADAPT_SETELEMENTSIZEFIELD,fem_adapt_setelementsizefield)(int *meshID, int *elem, double *size)
 {
   FEM_ADAPT_SetElementSizeField(*meshID, *elem, *size);
 }
@@ -107,7 +107,7 @@ void FEM_ADAPT_SetElementsSizeField(int meshID, double *sizes) {
     meshP->elem[0].setMeshSizing(i, sizes[i]);
   }
 }
-FDECL  void FTN_NAME(FEM_ADAPT_SETELEMENTSSIZEFIELD,fem_adapt_setelementssizefield)(int *meshID, double *sizes)
+FLINKAGE  void FTN_NAME(FEM_ADAPT_SETELEMENTSSIZEFIELD,fem_adapt_setelementssizefield)(int *meshID, double *sizes)
 {
   FEM_ADAPT_SetElementsSizeField(*meshID, sizes);
 }
@@ -117,7 +117,7 @@ void FEM_ADAPT_SetReferenceMesh(int meshID) {
     FEM_Mesh* mesh = FEM_Mesh_lookup(meshID, "FEM_ADAPT_SetReferenceMesh");
     mesh->getfmMM()->getfmAdaptAlgs()->SetReferenceMesh();
 }
-FDECL void FTN_NAME(FEM_ADAPT_SETREFERENCEMESH, fem_adapt_setreferencemesh)(int* meshID)
+FLINKAGE void FTN_NAME(FEM_ADAPT_SETREFERENCEMESH, fem_adapt_setreferencemesh)(int* meshID)
 {
     FEM_ADAPT_SetReferenceMesh(*meshID);
 }
@@ -128,7 +128,7 @@ void FEM_ADAPT_GradateMesh(int meshID, double smoothness)
     FEM_Mesh* mesh = FEM_Mesh_lookup(meshID, "FEM_ADAPT_GradateMesh");
     mesh->getfmMM()->getfmAdaptAlgs()->GradateMesh(smoothness);
 }
-FDECL void FTN_NAME(FEM_ADAPT_GRADATEMESH, fem_adapt_gradatemesh)(int* meshID, double* smoothness)
+FLINKAGE void FTN_NAME(FEM_ADAPT_GRADATEMESH, fem_adapt_gradatemesh)(int* meshID, double* smoothness)
 {
     FEM_ADAPT_GradateMesh(*meshID, *smoothness);
 }
@@ -137,7 +137,7 @@ void FEM_ADAPT_TestMesh(int meshID) {
     FEM_Mesh* mesh = FEM_Mesh_lookup(meshID, "FEM_ADAPT_GradateMesh");
     mesh->getfmMM()->getfmAdaptAlgs()->tests(true);
 }
-FDECL void FTN_NAME(FEM_ADAPT_TESTMESH, fem_adapt_testmesh)(int* meshID)
+FLINKAGE void FTN_NAME(FEM_ADAPT_TESTMESH, fem_adapt_testmesh)(int* meshID)
 {
     FEM_ADAPT_TestMesh(*meshID);
 }
@@ -146,7 +146,7 @@ int FEM_ADAPT_SimpleRefineMesh(int meshID, double targetA, double xmin, double y
     FEM_Mesh* mesh = FEM_Mesh_lookup(meshID, "FEM_ADAPT_GradateMesh");
     return mesh->getfmMM()->getfmAdaptAlgs()->simple_refine(targetA,xmin,ymin,xmax,ymax);
 }
-FDECL void FTN_NAME(FEM_ADAPT_SIMPLEREFINEMESH, fem_adapt_simplerefinemesh)(int* meshID, double* targetA, double* xmin, double* ymin, double* xmax, double* ymax)
+FLINKAGE void FTN_NAME(FEM_ADAPT_SIMPLEREFINEMESH, fem_adapt_simplerefinemesh)(int* meshID, double* targetA, double* xmin, double* ymin, double* xmax, double* ymax)
 {
     FEM_ADAPT_SimpleRefineMesh(*meshID,*targetA,*xmin,*ymin,*xmax,*ymax);
 }
@@ -155,7 +155,7 @@ int FEM_ADAPT_SimpleCoarsenMesh(int meshID, double targetA, double xmin, double
     FEM_Mesh* mesh = FEM_Mesh_lookup(meshID, "FEM_ADAPT_GradateMesh");
     return mesh->getfmMM()->getfmAdaptAlgs()->simple_coarsen(targetA,xmin,ymin,xmax,ymax);
 }
-FDECL void FTN_NAME(FEM_ADAPT_SIMPLECOARSENMESH, fem_adapt_simplecoarsenmesh)(int* meshID, double* targetA, double* xmin, double* ymin, double* xmax, double* ymax)
+FLINKAGE void FTN_NAME(FEM_ADAPT_SIMPLECOARSENMESH, fem_adapt_simplecoarsenmesh)(int* meshID, double* targetA, double* xmin, double* ymin, double* xmax, double* ymax)
 {
     FEM_ADAPT_SimpleCoarsenMesh(*meshID,*targetA,*xmin,*ymin,*xmax,*ymax);
 }
index 2ad69630aef83466aabcc9e4f457d669caee3689..8b65028c69333c9cfa6013d52c58af6a3f46e0b3 100644 (file)
@@ -73,7 +73,7 @@ static void mesh_data(int fem_mesh,int entity, int dtype,void *v_data) {
 /***************** Mesh Set ******************/
 
 // Lengths
-CDECL void FEM_Set_node(int nNodes,int doublePerNode) {
+CLINKAGE void FEM_Set_node(int nNodes,int doublePerNode) {
        FEM_Mesh_set_length(S,FEM_NODE,nNodes);
        FEM_Mesh_set_width(S,FEM_NODE,FEM_DATA,doublePerNode);
 }
@@ -81,7 +81,7 @@ FORTRAN_AS_C(FEM_SET_NODE,FEM_Set_node,fem_set_node,
        (int *n,int *d), (*n,*d)
 )
 
-CDECL void FEM_Set_elem(int elType,int n,int doublePerElem,int nodePerElem) {
+CLINKAGE void FEM_Set_elem(int elType,int n,int doublePerElem,int nodePerElem) {
        FEM_Mesh_set_length(S,FEM_ELEM+elType,n);
        FEM_Mesh_set_width(S,FEM_ELEM+elType,FEM_DATA,doublePerElem);
        FEM_Mesh_set_width(S,FEM_ELEM+elType,FEM_CONN,nodePerElem);
@@ -93,14 +93,14 @@ FORTRAN_AS_C(FEM_SET_ELEM,FEM_Set_elem,fem_set_elem,
 
 // Data
   // FIXME: add FEM_[GS]et_[node|elem]_data_c
-CDECL void FEM_Set_node_data(const double *data) {
+CLINKAGE void FEM_Set_node_data(const double *data) {
        mesh_data(S,FEM_NODE,FEM_DOUBLE,(void *)data);
 }
 FORTRAN_AS_C(FEM_SET_NODE_DATA_R,FEM_Set_node_data,fem_set_node_data_r,
        (const double *data), (data)
 )
 
-CDECL void FEM_Set_elem_data(int elType,const double *data) {
+CLINKAGE void FEM_Set_elem_data(int elType,const double *data) {
        mesh_data(S,FEM_ELEM+elType,FEM_DOUBLE,(void *)data);
 }
 FORTRAN_AS_C(FEM_SET_ELEM_DATA_R,FEM_Set_elem_data,fem_set_elem_data_r,
@@ -108,18 +108,18 @@ FORTRAN_AS_C(FEM_SET_ELEM_DATA_R,FEM_Set_elem_data,fem_set_elem_data_r,
 )
 
 // Connectivity
-CDECL void FEM_Set_elem_conn(int elType,const int *conn) {
+CLINKAGE void FEM_Set_elem_conn(int elType,const int *conn) {
        mesh_conn(S,FEM_ELEM+elType, (int *)conn, 0);
 }
 
-FDECL void FTN_NAME(FEM_SET_ELEM_CONN_R,fem_set_elem_conn_r)
+FLINKAGE void FTN_NAME(FEM_SET_ELEM_CONN_R,fem_set_elem_conn_r)
        (int *elType,const int *conn) 
 {
        mesh_conn(S,FEM_ELEM+*elType, (int *)conn, 1);
 }
 
 // Sparse
-CDECL void FEM_Set_sparse(int sid,int nRecords,
+CLINKAGE void FEM_Set_sparse(int sid,int nRecords,
        const int *nodes,int nodesPerRec,
        const void *data,int dataPerRec,int dataType) 
 {
@@ -127,7 +127,7 @@ CDECL void FEM_Set_sparse(int sid,int nRecords,
        FEM_Mesh_set_data(S,entity,FEM_CONN, (int *)nodes, 0,nRecords, FEM_INDEX_0,nodesPerRec);
        FEM_Mesh_set_data(S,entity,FEM_DATA, (void *)data, 0,nRecords, dataType,dataPerRec); 
 }
-FDECL void FTN_NAME(FEM_SET_SPARSE,fem_set_sparse)
+FLINKAGE void FTN_NAME(FEM_SET_SPARSE,fem_set_sparse)
        (int *sid,int *nRecords,
        const int *nodes,int *nodesPerRec,
        const void *data,int *dataPerRec,int *dataType) 
@@ -138,13 +138,13 @@ FDECL void FTN_NAME(FEM_SET_SPARSE,fem_set_sparse)
        FEM_Mesh_set_data(S,entity,FEM_DATA, (void *)data, 0,n, *dataType,*dataPerRec); 
 }
 
-CDECL void FEM_Set_sparse_elem(int sid,const int *rec2elem) 
+CLINKAGE void FEM_Set_sparse_elem(int sid,const int *rec2elem)
 {
        int entity=FEM_SPARSE+sid;
        int n=FEM_Mesh_get_length(S,FEM_SPARSE+sid);
        FEM_Mesh_set_data(S,entity,FEM_SPARSE_ELEM, (void *)rec2elem, 0,n, FEM_INDEX_0,2);
 }
-FDECL void FTN_NAME(FEM_SET_SPARSE_ELEM,fem_set_sparse_elem)
+FLINKAGE void FTN_NAME(FEM_SET_SPARSE_ELEM,fem_set_sparse_elem)
        (int *sid,int *rec2elem) 
 {
        int entity=FEM_SPARSE+*sid;
@@ -169,7 +169,7 @@ static int mesh_get_ghost_length(int mesh,int entity) {
 }
 
 // Lengths
-CDECL void FEM_Get_node(int *nNodes,int *perNode) {
+CLINKAGE void FEM_Get_node(int *nNodes,int *perNode) {
        *nNodes=mesh_get_ghost_length(G,FEM_NODE);
        *perNode=FEM_Mesh_get_width(G,FEM_NODE,FEM_DATA);
 }
@@ -177,7 +177,7 @@ FORTRAN_AS_C(FEM_GET_NODE,FEM_Get_node,fem_get_node,
        (int *n,int *per), (n,per))
 
 
-CDECL void FEM_Get_elem(int elType,int *nElem,int *doublePerElem,int *nodePerElem) {
+CLINKAGE void FEM_Get_elem(int elType,int *nElem,int *doublePerElem,int *nodePerElem) {
        *nElem=mesh_get_ghost_length(G,FEM_ELEM+elType);
        *doublePerElem=FEM_Mesh_get_width(G,FEM_ELEM+elType,FEM_DATA);
        *nodePerElem=FEM_Mesh_get_width(G,FEM_ELEM+elType,FEM_CONN);
@@ -186,13 +186,13 @@ FORTRAN_AS_C(FEM_GET_ELEM,FEM_Get_elem,fem_get_elem,
        (int *t,int *n,int *per,int *c), (*t,n,per,c))
 
 // Data
-CDECL void FEM_Get_node_data(double *data) {
+CLINKAGE void FEM_Get_node_data(double *data) {
        mesh_data(G,FEM_NODE,FEM_DOUBLE,data);
 }
 FORTRAN_AS_C(FEM_GET_NODE_DATA_R,FEM_Get_node_data,fem_get_node_data_r,
        (double *data), (data))
 
-CDECL void FEM_Get_elem_data(int elType,double *data) {
+CLINKAGE void FEM_Get_elem_data(int elType,double *data) {
        mesh_data(G,FEM_ELEM+elType,FEM_DOUBLE,data);
 }
 FORTRAN_AS_C(FEM_GET_ELEM_DATA_R,FEM_Get_elem_data,fem_get_elem_data_r,
@@ -200,11 +200,11 @@ FORTRAN_AS_C(FEM_GET_ELEM_DATA_R,FEM_Get_elem_data,fem_get_elem_data_r,
 
 
 // Connectivity
-CDECL void FEM_Get_elem_conn(int elType,int *conn) {
+CLINKAGE void FEM_Get_elem_conn(int elType,int *conn) {
        mesh_conn(G,FEM_ELEM+elType,conn,0);
 }
 
-FDECL void FTN_NAME(FEM_GET_ELEM_CONN_R, fem_get_elem_conn_r)
+FLINKAGE void FTN_NAME(FEM_GET_ELEM_CONN_R, fem_get_elem_conn_r)
        (int *elType,int *conn)
 {
        mesh_conn(G,FEM_ELEM+*elType,conn,1);
@@ -212,20 +212,20 @@ FDECL void FTN_NAME(FEM_GET_ELEM_CONN_R, fem_get_elem_conn_r)
 
 
 // Sparse
-CDECL int  FEM_Get_sparse_length(int sid) {
+CLINKAGE int  FEM_Get_sparse_length(int sid) {
        return mesh_get_ghost_length(G,FEM_SPARSE+sid);
 }
 FORTRAN_AS_C_RETURN(int, FEM_GET_SPARSE_LENGTH,FEM_Get_sparse_length,fem_get_sparse_length,
        (int *sid), (*sid))
 
-CDECL void FEM_Get_sparse(int sid,int *nodes,void *data) {
+CLINKAGE void FEM_Get_sparse(int sid,int *nodes,void *data) {
        int fem_mesh=G;
        int entity=FEM_SPARSE+sid;
        int dataType=FEM_Mesh_get_datatype(fem_mesh,entity,FEM_DATA);
        mesh_data(fem_mesh,entity,dataType,data);
        mesh_conn(fem_mesh,entity,nodes,0);
 }
-FDECL void FTN_NAME(FEM_GET_SPARSE,fem_get_sparse)(int *sid,int *nodes,void *data) {
+FLINKAGE void FTN_NAME(FEM_GET_SPARSE,fem_get_sparse)(int *sid,int *nodes,void *data) {
        int fem_mesh=G;
        int entity=FEM_SPARSE+*sid;
        int dataType=FEM_Mesh_get_datatype(fem_mesh,entity,FEM_DATA);
@@ -233,26 +233,26 @@ FDECL void FTN_NAME(FEM_GET_SPARSE,fem_get_sparse)(int *sid,int *nodes,void *dat
        mesh_conn(fem_mesh,entity,nodes,1);
 }
 
-CDECL int FEM_Get_node_ghost(void) 
+CLINKAGE int FEM_Get_node_ghost(void)
 { // Index of first ghost node==number of real nodes
        return FEM_Mesh_get_length(G,FEM_NODE);
 }
-FDECL int FTN_NAME(FEM_GET_NODE_GHOST,fem_get_node_ghost)(void) {
+FLINKAGE int FTN_NAME(FEM_GET_NODE_GHOST,fem_get_node_ghost)(void) {
        return 1+FEM_Get_node_ghost();
 }
 
-CDECL int FEM_Get_elem_ghost(int elemType) 
+CLINKAGE int FEM_Get_elem_ghost(int elemType)
 { // Index of first ghost element==number of real elements
        return FEM_Mesh_get_length(G,FEM_ELEM+elemType);
 } 
-FDECL int FTN_NAME(FEM_GET_ELEM_GHOST,fem_get_elem_ghost)(int *elType) {
+FLINKAGE int FTN_NAME(FEM_GET_ELEM_GHOST,fem_get_elem_ghost)(int *elType) {
        return 1+FEM_Get_elem_ghost(*elType);
 }
 
 
 /** Symmetries */
 
-CDECL void FEM_Get_sym(int elTypeOrMinusOne,int *destSym)
+CLINKAGE void FEM_Get_sym(int elTypeOrMinusOne,int *destSym)
 {
        const char *callingRoutine="FEM_Get_sym";
        FEMAPI(callingRoutine);
@@ -265,7 +265,7 @@ CDECL void FEM_Get_sym(int elTypeOrMinusOne,int *destSym)
        int g=l.getGhost()->size();
        for (i=0;i<g;i++) destSym[n+i]=l.getGhost()->getSymmetries(i);
 }
-FDECL void FTN_NAME(FEM_GET_SYM,fem_get_sym)
+FLINKAGE void FTN_NAME(FEM_GET_SYM,fem_get_sym)
        (int *elTypeOrZero,int *destSym)
 {
        FEM_Get_sym(zeroToMinusOne(*elTypeOrZero),destSym);
@@ -275,12 +275,12 @@ FDECL void FTN_NAME(FEM_GET_SYM,fem_get_sym)
 
 /** Ancient compatability */
 
-CDECL void FEM_Set_mesh(int nelem, int nnodes, int nodePerElem, int* conn) {
+CLINKAGE void FEM_Set_mesh(int nelem, int nnodes, int nodePerElem, int* conn) {
        FEM_Set_node(nnodes,0);
        FEM_Set_elem(0,nelem,0,nodePerElem);
        FEM_Set_elem_conn(0,conn);
 }
-FDECL void FTN_NAME(FEM_SET_MESH,fem_set_mesh)
+FLINKAGE void FTN_NAME(FEM_SET_MESH,fem_set_mesh)
         (int *nelem, int *nnodes, int *ctype, int *conn)
 {
        int elType=1,zero=0;
@@ -346,7 +346,7 @@ public:
        }
 };
 
-CDECL void FEM_Update_mesh(FEM_Update_mesh_fn callFn,int userValue,int doWhat) 
+CLINKAGE void FEM_Update_mesh(FEM_Update_mesh_fn callFn,int userValue,int doWhat)
 {
   updateState update(doWhat);
   if (update.pre() && 0 != userValue)
@@ -354,7 +354,7 @@ CDECL void FEM_Update_mesh(FEM_Update_mesh_fn callFn,int userValue,int doWhat)
   update.post();
 }
 
-FDECL void FTN_NAME(FEM_UPDATE_MESH,fem_update_mesh)
+FLINKAGE void FTN_NAME(FEM_UPDATE_MESH,fem_update_mesh)
   (FEM_Update_mesh_fortran_fn callFn,int *userValue,int *doWhat) 
 { 
   updateState update(*doWhat);
@@ -369,21 +369,21 @@ mesh prep/post utilities.
 */
 static int *splitMesh=NULL;
 static int splitChunks=0;
-CDECL void FEM_Serial_split(int nchunks) {
+CLINKAGE void FEM_Serial_split(int nchunks) {
        splitChunks=nchunks;
        splitMesh=new int[splitChunks];
        FEM_Mesh_partition(FEM_Mesh_default_write(),splitChunks,splitMesh);
 }
 FORTRAN_AS_C(FEM_SERIAL_SPLIT,FEM_Serial_split,fem_serial_split, (int *n),(*n))
 
-CDECL void FEM_Serial_begin(int chunkNo) {
+CLINKAGE void FEM_Serial_begin(int chunkNo) {
        FEM_Mesh_write(splitMesh[chunkNo],"fem_mesh",chunkNo,splitChunks);
        FEM_Mesh_set_default_read(splitMesh[chunkNo]);
 }
 FORTRAN_AS_C(FEM_SERIAL_BEGIN,FEM_Serial_begin,fem_serial_begin, (int *c),(*c-1))
 
 
-CDECL void FEM_Serial_read(int chunkNo,int nChunks) {
+CLINKAGE void FEM_Serial_read(int chunkNo,int nChunks) {
        if (splitMesh==NULL) {
                splitChunks=nChunks;
                splitMesh=new int[splitChunks];
@@ -399,7 +399,7 @@ CDECL void FEM_Serial_read(int chunkNo,int nChunks) {
 }
 FORTRAN_AS_C(FEM_SERIAL_READ,FEM_Serial_read,fem_serial_read, (int *c,int *n),(*c-1,*n))
 
-CDECL void FEM_Serial_assemble(void) {
+CLINKAGE void FEM_Serial_assemble(void) {
        int serialMesh=FEM_Mesh_assemble(splitChunks,splitMesh);
        for (int i=0;i<splitChunks;i++)
                FEM_Mesh_deallocate(splitMesh[i]);
index 4a0eb967cf22807afaf4c5ec1893db42860fb35c..43f6dbc12d1b07ff9f49cbb050e58db131412643 100644 (file)
@@ -1,2 +1,2 @@
 #include "charm-api.h"
-CDECL void driver(void) { }
+CLINKAGE void driver(void) { }
index 7d2c70e2d577f1eb7f28b18b5c13090e6962c096..bf715cf5d9500f137078a61488caa1fd8157e685 100644 (file)
@@ -3,6 +3,6 @@
 #if CMK_FORTRAN_USES_NOSCORE 
 /*Fortran and C fallbacks have the same name-- skip this.*/
 #else
-FDECL void FTN_NAME(DRIVER,driver)(void) { }
+FLINKAGE void FTN_NAME(DRIVER,driver)(void) { }
 #endif
 
index 407df599abca08b02485ad6ec46c48fe44de256a..5a321a57e184edf4e624a636db50f0286bf87ba5 100644 (file)
@@ -3,5 +3,5 @@
 #if CMK_FORTRAN_USES_NOSCORE    
 /*Fortran and C fallbacks have the same name-- skip this.*/
 #else
-FDECL void FTN_NAME(INIT,init)(void) { }
+FLINKAGE void FTN_NAME(INIT,init)(void) { }
 #endif
index f19f9cd582cbd7ff2bd1ec409fdb95c1ba9202a2..ab8f63a8733da83e2591075f5aa0adebae7075ae 100644 (file)
@@ -1,2 +1,2 @@
 #include "charm-api.h"
-CDECL void init(void) { }
+CLINKAGE void init(void) { }
index 006926f0fee0f6b978ed08090b92292471d3d143..9df576310ed4c536d3ee3e9cae7aa1d2a5ad2243 100644 (file)
@@ -24,10 +24,10 @@ Orion Sky Lawlor, olawlor@acm.org, 2003/7/13
 #include "ParFUM.h"
 #include "ParFUM_internals.h"
 
-CDECL void fem_impl_call_init(void);
+CLINKAGE void fem_impl_call_init(void);
 
-FDECL void FTN_NAME(INIT,init)(void);
-FDECL void FTN_NAME(DRIVER,driver)(void);
+FLINKAGE void FTN_NAME(INIT,init)(void);
+FLINKAGE void FTN_NAME(DRIVER,driver)(void);
 
 int main(int argc,char **argv) {
        MPI_Comm comm=MPI_COMM_WORLD;
index a781ffee4a653d54fb12fd33f8a8a4d2dea3e0e1..13d7ecf18aba74cc3aec44b9cf48cecc3df87fdd 100644 (file)
@@ -54,13 +54,13 @@ static void checkIsSet(int fem_mesh,bool wantSet,const char *caller) {
 }
 
 /* Connectivity: Map calls to appropriate version of FEM_Mesh_data */
-CDECL void
+CLINKAGE void
 FEM_Mesh_conn(int fem_mesh,int entity,
        int *conn, int firstItem, int length, int width)
 {
        FEM_Mesh_data(fem_mesh,entity,FEM_CONN, conn, firstItem,length, FEM_INDEX_0, width);
 }
-FDECL void
+FLINKAGE void
 FTN_NAME(FEM_MESH_CONN,fem_mesh_conn)(int *fem_mesh,int *entity,
        int *conn, int *firstItem,int *length, int *width)
 {
@@ -68,14 +68,14 @@ FTN_NAME(FEM_MESH_CONN,fem_mesh_conn)(int *fem_mesh,int *entity,
        FEM_Mesh_data(*fem_mesh,*entity,FEM_CONN, conn, *firstItem-1,*length, FEM_INDEX_1, *width);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_set_conn(int fem_mesh,int entity,
        const int *conn, int firstItem,int length, int width)
 {
        checkIsSet(fem_mesh,true,"FEM_Mesh_set_conn");
        FEM_Mesh_conn(fem_mesh,entity,(int *)conn,firstItem,length,width);
 }
-FDECL void
+FLINKAGE void
 FTN_NAME(FEM_MESH_SET_CONN,fem_mesh_set_conn)(int *fem_mesh,int *entity,
        const int *conn, int *firstItem,int *length, int *width)
 {
@@ -83,14 +83,14 @@ FTN_NAME(FEM_MESH_SET_CONN,fem_mesh_set_conn)(int *fem_mesh,int *entity,
        FTN_NAME(FEM_MESH_CONN,fem_mesh_conn)(fem_mesh,entity,(int *)conn,firstItem,length,width);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_get_conn(int fem_mesh,int entity,
        int *conn, int firstItem,int length, int width)
 {
        checkIsSet(fem_mesh,false,"FEM_Mesh_get_conn");
        FEM_Mesh_conn(fem_mesh,entity,conn,firstItem,length,width);
 }
-FDECL void
+FLINKAGE void
 FTN_NAME(FEM_MESH_GET_CONN,fem_mesh_get_conn)(int *fem_mesh,int *entity,
        int *conn, int *firstItem,int *length, int *width)
 {
@@ -100,7 +100,7 @@ FTN_NAME(FEM_MESH_GET_CONN,fem_mesh_get_conn)(int *fem_mesh,int *entity,
 
 
 /* Data: map to FEM_Mesh_offset */
-CDECL void
+CLINKAGE void
 FEM_Mesh_data(int fem_mesh,int entity,int attr,
        void *data, int firstItem,int length, int datatype,int width)
 {
@@ -114,7 +114,7 @@ FORTRAN_AS_C(FEM_MESH_DATA,FEM_Mesh_data,fem_mesh_data,
 )
 
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_set_data(int fem_mesh,int entity,int attr,
        const void *data, int firstItem,int length, int datatype,int width)
 {
@@ -126,7 +126,7 @@ FORTRAN_AS_C(FEM_MESH_SET_DATA,FEM_Mesh_set_data,fem_mesh_set_data,
        (*fem_mesh,*entity,*attr,data,*firstItem-1,*length,*datatype,*width)
 )
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_get_data(int fem_mesh,int entity,int attr,
        void *data, int firstItem,int length, int datatype,int width)
 {
@@ -138,7 +138,7 @@ FORTRAN_AS_C(FEM_MESH_GET_DATA,FEM_Mesh_get_data,fem_mesh_get_data,
        (*fem_mesh,*entity,*attr,data,*firstItem-1,*length,*datatype,*width)
 )
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_data_layout(int fem_mesh,int entity,int attr,
        void *data, int firstItem,int length, IDXL_Layout_t layout)
 {
@@ -152,7 +152,7 @@ FORTRAN_AS_C(FEM_MESH_DATA_LAYOUT,FEM_Mesh_data_layout,fem_mesh_data_layout,
        (*fem_mesh,*entity,*attr,data,*firstItem-1,*length,*layout)
 )
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_data_offset(int fem_mesh,int entity,int attr,
        void *data, int firstItem,int length,
        int type,int width, int offsetBytes,int distanceBytes,int skewBytes)
@@ -195,21 +195,21 @@ void FEM_Register_array_layout(int fem_mesh,int entity,int attr,
 }
 
 /*registration api */
-CDECL void
+CLINKAGE void
 FEM_Register_array(int fem_mesh,int entity,int attr,
        void *data, int datatype,int width)
 {
        FEM_Register_array(fem_mesh,entity,attr,data,datatype,width,0);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Register_array_layout(int fem_mesh,int entity,int attr,
        void *data, IDXL_Layout_t layout){
        FEM_Register_array_layout(fem_mesh,entity,attr,data,layout,0);
 }
 
 
-CDECL void
+CLINKAGE void
 FEM_Register_entity(int fem_mesh,int entity,void *data,
                int len,int max,FEM_Mesh_alloc_fn fn) {
                FEM_Register_entity_impl(fem_mesh,entity,data,len,max,fn);
@@ -229,7 +229,7 @@ FORTRAN_AS_C(FEM_REGISTER_ENTITY,FEM_Register_entity,fem_register_entity,
 
 
 // User data API:
-CDECL void
+CLINKAGE void
 FEM_Mesh_pup(int fem_mesh,int dataTag,FEM_Userdata_fn fn,void *data) {
        const char *caller="FEM_Mesh_pup"; FEMAPI(caller);
        FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
@@ -246,7 +246,7 @@ FORTRAN_AS_C(FEM_MESH_PUP,FEM_Mesh_pup,fem_mesh_pup,
        (int *m,int *t,FEM_Userdata_fn fn,void *data), (*m,*t,fn,data))
 
 // Accessor API:
-CDECL void
+CLINKAGE void
 FEM_Mesh_set_length(int fem_mesh,int entity,int newLength) {
        const char *caller="FEM_Mesh_set_length"; FEMAPI(caller);
        checkIsSet(fem_mesh,true,caller);
@@ -258,7 +258,7 @@ FORTRAN_AS_C(FEM_MESH_SET_LENGTH,FEM_Mesh_set_length,fem_mesh_set_length,
 )
 
 
-CDECL int
+CLINKAGE int
 FEM_Mesh_get_length(int fem_mesh,int entity) {
        const char *caller="FEM_Mesh_get_length"; FEMAPI(caller);
        int len=FEM_Entity_lookup(fem_mesh,entity,caller)->size();
@@ -270,7 +270,7 @@ FORTRAN_AS_C_RETURN(int,
 )
 
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_set_width(int fem_mesh,int entity,int attr,int newWidth) {
        const char *caller="FEM_Mesh_set_width";
        FEMAPI(caller);
@@ -282,7 +282,7 @@ FORTRAN_AS_C(FEM_MESH_SET_WIDTH,FEM_Mesh_set_width,fem_mesh_set_width,
        (*fem_mesh,*entity,*attr,*newWidth)
 )
 
-CDECL int
+CLINKAGE int
 FEM_Mesh_get_width(int fem_mesh,int entity,int attr) {
        const char *caller="FEM_Mesh_get_width";
        FEMAPI(caller);
@@ -293,7 +293,7 @@ FORTRAN_AS_C_RETURN(int,
        (int *fem_mesh,int *entity,int *attr),(*fem_mesh,*entity,*attr)
 )
 
-CDECL int
+CLINKAGE int
 FEM_Mesh_get_datatype(int fem_mesh,int entity,int attr) {
        const char *caller="FEM_Mesh_get_datatype";
        FEMAPI(caller);
@@ -304,7 +304,7 @@ FORTRAN_AS_C_RETURN(int,
        (int *fem_mesh,int *entity,int *attr),(*fem_mesh,*entity,*attr)
 )
 
-CDECL int
+CLINKAGE int
 FEM_Mesh_is_set(int fem_mesh) /* return 1 if this is a writing mesh */
 {
        return (FEM_Mesh_lookup(fem_mesh,"FEM_Mesh_is_get")->isSetting())?1:0;
@@ -314,7 +314,7 @@ FORTRAN_AS_C_RETURN(int,
        (int *fem_mesh),(*fem_mesh)
 )
 
-CDECL int
+CLINKAGE int
 FEM_Mesh_is_get(int fem_mesh) /* return 1 if this is a readable mesh */
 {
        return (!FEM_Mesh_lookup(fem_mesh,"FEM_Mesh_is_get")->isSetting())?1:0;
@@ -324,18 +324,18 @@ FORTRAN_AS_C_RETURN(int,
        (int *fem_mesh),(*fem_mesh)
 )
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_become_get(int fem_mesh) /* Make this a readable mesh */
 { FEM_Mesh_lookup(fem_mesh,"FEM_Mesh_become_get")->becomeGetting(); }
 FORTRAN_AS_C(FEM_MESH_BECOME_GET,FEM_Mesh_become_get,fem_mesh_become_get, (int *m),(*m))
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_become_set(int fem_mesh)
 { FEM_Mesh_lookup(fem_mesh,"FEM_Mesh_become_get")->becomeSetting(); }
 FORTRAN_AS_C(FEM_MESH_BECOME_SET,FEM_Mesh_become_set,fem_mesh_become_set, (int *m),(*m))
 
 
-CDECL IDXL_t
+CLINKAGE IDXL_t
 FEM_Comm_shared(int fem_mesh,int entity) {
        const char *caller="FEM_Comm_shared";
        FEMAPI(caller);
@@ -348,7 +348,7 @@ FORTRAN_AS_C_RETURN(int,
        (int *fem_mesh,int *entity),(*fem_mesh,*entity)
 )
 
-CDECL IDXL_t
+CLINKAGE IDXL_t
 FEM_Comm_ghost(int fem_mesh,int entity) {
        const char *caller="FEM_Comm_ghost";
        FEMAPI(caller);
@@ -423,7 +423,7 @@ FEM_Attribute *FEM_Attribute_lookup(int fem_mesh,int entity,int attr,const char
        return FEM_Entity_lookup(fem_mesh,entity,caller)->lookup(attr,caller);
 }
 
-CDECL int FEM_Mesh_get_entities(int fem_mesh, int *entities) {
+CLINKAGE int FEM_Mesh_get_entities(int fem_mesh, int *entities) {
        const char *caller="FEM_Mesh_get_entities";
        FEMAPI(caller);
        return FEM_Mesh_lookup(fem_mesh,caller)->getEntities(entities);
@@ -433,7 +433,7 @@ FORTRAN_AS_C_RETURN(int,
        (int *mesh,int *ent), (*mesh,ent)
 )
 
-CDECL int FEM_Mesh_get_attributes(int fem_mesh,int entity,int *attributes) {
+CLINKAGE int FEM_Mesh_get_attributes(int fem_mesh,int entity,int *attributes) {
        const char *caller="FEM_Mesh_get_attributes";
        FEMAPI(caller);
        return FEM_Entity_lookup(fem_mesh,entity,caller)->getAttrs(attributes);
@@ -445,7 +445,7 @@ FORTRAN_AS_C_RETURN(int,
 
 /************** FEM_Attribute ****************/
 
-CDECL const char *FEM_Get_datatype_name(int datatype,char *storage) {
+CLINKAGE const char *FEM_Get_datatype_name(int datatype,char *storage) {
        switch(datatype) {
        case FEM_BYTE: return "FEM_BYTE";
        case FEM_INT: return "FEM_INT";
@@ -460,7 +460,7 @@ CDECL const char *FEM_Get_datatype_name(int datatype,char *storage) {
 
 /// Return the human-readable version of this FEM_ATTR code.
 ///  For example, FEM_attr2name(FEM_CONN)=="FEM_CONN".
-CDECL const char *FEM_Get_attr_name(int attr,char *storage)
+CLINKAGE const char *FEM_Get_attr_name(int attr,char *storage)
 {
        if (attr<FEM_ATTRIB_TAG_MAX)
        { //It's a user tag:
@@ -1069,7 +1069,7 @@ int FEM_VarIndexAttribute::findInRow(int row, const ElemID &data){
 /********************** Entity **************************/
 
 /// Return the human-readable version of this entity code.
-CDECL const char *FEM_Get_entity_name(int entity,char *storage)
+CLINKAGE const char *FEM_Get_entity_name(int entity,char *storage)
 {
        char *dest=storage;
        if (entity<FEM_ENTITY_FIRST || entity>=FEM_ENTITY_LAST) {
@@ -2259,7 +2259,7 @@ void FEM_writeMesh(FEM_Mesh *m,const char *prefix,int chunkNo,int nChunks)
 }
 
 // A subroutine that can enable projections tracing
-CDECL void FEM_traceBegin(){
+CLINKAGE void FEM_traceBegin(){
   traceBegin();
 }
 FORTRAN_AS_C(FEM_TRACEBEGIN,
@@ -2268,7 +2268,7 @@ FORTRAN_AS_C(FEM_TRACEBEGIN,
              (),  () )
 
 // A subroutine that can disable projections tracing                                                                                
-CDECL void FEM_traceEnd(){
+CLINKAGE void FEM_traceEnd(){
   traceEnd();
 }
 FORTRAN_AS_C(FEM_TRACEEND,
@@ -2280,7 +2280,7 @@ FORTRAN_AS_C(FEM_TRACEEND,
 
 
 // Setup the entity FEM_IS_VALID tables
-CDECL void FEM_Mesh_allocate_valid_attr(int fem_mesh, int entity_type){
+CLINKAGE void FEM_Mesh_allocate_valid_attr(int fem_mesh, int entity_type){
   FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,"FEM_Mesh_create_valid_elem");
   FEM_Entity *entity = m->lookup(entity_type,"FEM_Mesh_allocate_valid_attr");
   entity->allocateValid();
@@ -2292,7 +2292,7 @@ FORTRAN_AS_C(FEM_MESH_ALLOCATE_VALID_ATTR,
 
 
 // mark an entity as valid
-CDECL void FEM_set_entity_valid(int mesh, int entityType, int entityIdx){
+CLINKAGE void FEM_set_entity_valid(int mesh, int entityType, int entityIdx){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_");
   FEM_Entity *entity = m->lookup(entityType,"FEM_");
   entity->set_valid(entityIdx,true);
@@ -2304,7 +2304,7 @@ FORTRAN_AS_C(FEM_SET_ENTITY_VALID,
 
 
 // mark an entity as invalid
-CDECL void FEM_set_entity_invalid(int mesh, int entityType, int entityIdx){
+CLINKAGE void FEM_set_entity_invalid(int mesh, int entityType, int entityIdx){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Mesh_create_valid_elem");
   FEM_Entity *entity = m->lookup(entityType,"FEM_Mesh_allocate_valid_attr");
   return entity->set_invalid(entityIdx,true);
@@ -2316,7 +2316,7 @@ FORTRAN_AS_C(FEM_SET_ENTITY_INVALID,
 
 
 // Determine if an entity is valid
-CDECL int FEM_is_valid(int mesh, int entityType, int entityIdx){
+CLINKAGE int FEM_is_valid(int mesh, int entityType, int entityIdx){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Mesh_create_valid_elem");
   FEM_Entity *entity = m->lookup(entityType,"FEM_Mesh_allocate_valid_attr");
   return (entity->is_valid(entityIdx) != 0);
@@ -2328,7 +2328,7 @@ FORTRAN_AS_C(FEM_IS_VALID,
 
 
 // Count number of valid items for this entity type
-CDECL int FEM_count_valid(int mesh, int entityType){
+CLINKAGE int FEM_count_valid(int mesh, int entityType){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Mesh_create_valid_elem");
   FEM_Entity *entity = m->lookup(entityType,"FEM_Mesh_allocate_valid_attr");
   return entity->count_valid();
@@ -2339,7 +2339,7 @@ FORTRAN_AS_C(FEM_COUNT_VALID,
              (int *fem_mesh, int *entity_type),  (*fem_mesh, *entity_type) )
 
 
-CDECL int FEM_is_node_shared(int mesh_id, int idx) {
+CLINKAGE int FEM_is_node_shared(int mesh_id, int idx) {
     FEM_Mesh* mesh = FEM_Mesh_lookup(mesh_id,"FEM_is_node_shared");
     const IDXL_Rec *rec = mesh->node.shared.getRec(idx);
     return (int)(rec != NULL);
@@ -2350,7 +2350,7 @@ FORTRAN_AS_C(FEM_IS_NODE_SHARED,
         (int* fem_mesh, int* node_idx), (*fem_mesh, *node_idx))
 
 
-CDECL int FEM_find_node_owner(int mesh_id, int idx) {
+CLINKAGE int FEM_find_node_owner(int mesh_id, int idx) {
     FEM_Mesh* mesh = FEM_Mesh_lookup(mesh_id,"FEM_find_node_owner");
     const IDXL_Rec *rec = mesh->node.shared.getRec(idx);
     int min = FEM_My_partition();
index 7bfd82d2de10c191185962fdc0adba4ac727e1d3..955459d3fdb4781095476291873ccace568e33dc 100644 (file)
@@ -23,7 +23,7 @@ FORTRAN_AS_C(CMIMEMORYCHECK,
 #endif
 
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_create_node_elem_adjacency(int fem_mesh){
        const char *caller="FEM_Mesh_create_node_elem_adjacency"; FEMAPI(caller);
        FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
@@ -34,7 +34,7 @@ FORTRAN_AS_C(FEM_MESH_CREATE_NODE_ELEM_ADJACENCY,
              fem_mesh_create_node_elem_adjacency, 
              (int *fem_mesh),  (*fem_mesh) )
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_create_node_node_adjacency(int fem_mesh){
        const char *caller="FEM_Mesh_create_node_node_adjacency"; FEMAPI(caller);
        FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
@@ -45,7 +45,7 @@ FORTRAN_AS_C(FEM_MESH_CREATE_NODE_NODE_ADJACENCY,
              fem_mesh_create_node_node_adjacency, 
              (int *fem_mesh),  (*fem_mesh) )
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_create_elem_elem_adjacency(int fem_mesh){
        const char *caller="FEM_Mesh_create_elem_elem_adjacency"; FEMAPI(caller);
        FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
@@ -56,13 +56,13 @@ FORTRAN_AS_C(FEM_MESH_CREATE_ELEM_ELEM_ADJACENCY,
              fem_mesh_create_elem_elem_adjacency, 
              (int *fem_mesh),  (*fem_mesh) )
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_create_elem_node_adjacency(int fem_mesh){
   CkPrintf("WARNING: Do Not Call FEM_Mesh_create_elem_node_adjacency(), as the connectivity table should already exist\n");
 }
 
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_get2ElementsOnEdge(int fem_mesh, int n1, int n2, int *e1, int *e2){
        const char *caller="FEM_Mesh_get2ElementsOnEdge"; FEMAPI(caller);
        FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
@@ -75,7 +75,7 @@ FORTRAN_AS_C(FEM_MESH_GET2ELEMENTSONEDGE,
              (*fem_mesh,*n1,*n2,e1,e2) )
 
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_get2ElementsOnEdgeSorted(int fem_mesh, int n1, int n2, int *e1, int *e2){
   const char *caller="FEM_Mesh_get2ElementsOnEdge"; FEMAPI(caller);
   FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
index 6bea277180ef7c308252d385b37c86703075a3b4..ec33ff8b36f3e25b07538c2d7d27f8e81eb9cf7d 100644 (file)
@@ -22,7 +22,7 @@
 
 using namespace std;
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_detect_features(int fem_mesh) {
   const char *caller="FEM_Mesh_detect_features"; FEMAPI(caller);
   FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
index be59bac840bb1296cde359b4fbb0b9808af9d8ff..fc6a3a5bbccaede5f7d219d3aa76b035051c46d9 100644 (file)
@@ -31,26 +31,26 @@ inline int is_shared(FEM_Mesh *m, int node){
 /* Some helper print functions that can be used for debugging 
    helper functions that print the various node/element connectivities
    calls the corresponding functions in the FEM_MUtil class to do the printing */
-CDECL void FEM_Print_n2n(int mesh, int nodeid){
+CLINKAGE void FEM_Print_n2n(int mesh, int nodeid){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Print_Mesh_Summary");
   m->getfmMM()->getfmUtil()->FEM_Print_n2n(m, nodeid);
 }
-CDECL void FEM_Print_n2e(int mesh, int eid){
+CLINKAGE void FEM_Print_n2e(int mesh, int eid){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Print_Mesh_Summary");
   m->getfmMM()->getfmUtil()->FEM_Print_n2e(m, eid);
 }
-CDECL void FEM_Print_e2n(int mesh, int eid){
+CLINKAGE void FEM_Print_e2n(int mesh, int eid){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Print_Mesh_Summary");
   m->getfmMM()->getfmUtil()->FEM_Print_e2n(m, eid);
 }
-CDECL void FEM_Print_e2e(int mesh, int eid){
+CLINKAGE void FEM_Print_e2e(int mesh, int eid){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Print_Mesh_Summary");
   m->getfmMM()->getfmUtil()->FEM_Print_e2e(m, eid);
 }
 
 /** Prints the mesh summary, i.e. number of valid nodes/elements (local/ghost)
  */
-CDECL void FEM_Print_Mesh_Summary(int mesh){
+CLINKAGE void FEM_Print_Mesh_Summary(int mesh){
   CkPrintf("---------------FEM_Print_Mesh_Summary-------------\n");
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Print_Mesh_Summary");
   // Print Node information
@@ -74,19 +74,19 @@ CDECL void FEM_Print_Mesh_Summary(int mesh){
 //========================Basic Adaptivity operations=======================
 /*These are the basic add/remove node/element operations */
 //The following functions translate the calls from meshId to mesh pointer
-CDECL int FEM_add_node(int mesh, int* adjacent_nodes, int num_adjacent_nodes, int *chunks, int numChunks, int forceShared){
+CLINKAGE int FEM_add_node(int mesh, int* adjacent_nodes, int num_adjacent_nodes, int *chunks, int numChunks, int forceShared){
   return FEM_add_node(FEM_Mesh_lookup(mesh,"FEM_add_node"), adjacent_nodes, num_adjacent_nodes, chunks, numChunks, forceShared);
 }
-CDECL void FEM_remove_node(int mesh,int node){
+CLINKAGE void FEM_remove_node(int mesh,int node){
   return FEM_remove_node(FEM_Mesh_lookup(mesh,"FEM_remove_node"), node);
 }
-CDECL int FEM_add_element(int mesh, int* conn, int conn_size, int elem_type, int chunkNo){
+CLINKAGE int FEM_add_element(int mesh, int* conn, int conn_size, int elem_type, int chunkNo){
   return FEM_add_element(FEM_Mesh_lookup(mesh,"FEM_add_element"), conn, conn_size, elem_type, chunkNo);
 }
-CDECL int FEM_remove_element(int mesh, int element, int elem_type, int permanent){
+CLINKAGE int FEM_remove_element(int mesh, int element, int elem_type, int permanent){
   return FEM_remove_element(FEM_Mesh_lookup(mesh,"FEM_remove_element"), element, elem_type, permanent);
 }
-CDECL int FEM_purge_element(int mesh, int element, int elem_type) {
+CLINKAGE int FEM_purge_element(int mesh, int element, int elem_type) {
   return FEM_purge_element(FEM_Mesh_lookup(mesh,"FEM_remove_element"), element, elem_type);
 }
 
@@ -1654,17 +1654,17 @@ int FEM_purge_element(FEM_Mesh *m, int elementid, int elemtype) {
 //========================Locking operations=======================
 /* These are the locking operations on nodes or chunks, depending on the locking scheme */
 //these are based on chunk locking: DEPRECATED
-CDECL int FEM_Modify_Lock(int mesh, int* affectedNodes, int numAffectedNodes, int* affectedElts, int numAffectedElts, int elemtype){
+CLINKAGE int FEM_Modify_Lock(int mesh, int* affectedNodes, int numAffectedNodes, int* affectedElts, int numAffectedElts, int elemtype){
   return FEM_Modify_Lock(FEM_Mesh_lookup(mesh,"FEM_Modify_Lock"), affectedNodes, numAffectedNodes, affectedElts, numAffectedElts, elemtype);
 }
-CDECL int FEM_Modify_Unlock(int mesh){
+CLINKAGE int FEM_Modify_Unlock(int mesh){
   return FEM_Modify_Unlock(FEM_Mesh_lookup(mesh,"FEM_Modify_Unlock"));
 }
 //these are based on node locking
-CDECL int FEM_Modify_LockN(int mesh, int nodeId, int readLock) {
+CLINKAGE int FEM_Modify_LockN(int mesh, int nodeId, int readLock) {
   return FEM_Modify_LockN(FEM_Mesh_lookup(mesh,"FEM_Modify_LockN"),nodeId, readLock);
 }
-CDECL int FEM_Modify_UnlockN(int mesh, int nodeId, int readLock) {
+CLINKAGE int FEM_Modify_UnlockN(int mesh, int nodeId, int readLock) {
   return FEM_Modify_UnlockN(FEM_Mesh_lookup(mesh,"FEM_Modify_UnlockN"),nodeId, readLock);
 }
 
index abf5f886823b4fddfdc2cf9280d741888bf5ed67..06c6cf1cc5fe2d8e481927a2b9ca6c3dd0b5a44b 100644 (file)
@@ -387,7 +387,7 @@ void FEM_Sym_Linear::pup(PUP::er &p) {
 }
 
 /********** High-Level (Faces & coordinates) API **********/
-CDECL void FEM_Add_linear_periodicity(
+CLINKAGE void FEM_Add_linear_periodicity(
        int nFaces,int nPer,
        const int *facesA,const int *facesB,
        int nNodes,const double *nodeLocs
@@ -397,7 +397,7 @@ CDECL void FEM_Add_linear_periodicity(
        FEM_curPartition().addLinearPeriodic(nFaces,nPer,
                facesA,facesB,0,nNodes,(const CkVector3d *)nodeLocs);
 }
-FDECL void FTN_NAME(FEM_ADD_LINEAR_PERIODICITY,fem_add_linear_periodicity)(
+FLINKAGE void FTN_NAME(FEM_ADD_LINEAR_PERIODICITY,fem_add_linear_periodicity)(
        int *nFaces,int *nPer,
        const int *facesA,const int *facesB,
        int *nNodes,const double *nodeLocs
@@ -408,7 +408,7 @@ FDECL void FTN_NAME(FEM_ADD_LINEAR_PERIODICITY,fem_add_linear_periodicity)(
                facesA,facesB,1,*nNodes,(const CkVector3d *)nodeLocs);
 }
 
-CDECL void FEM_Sym_coordinates(int elType,double *d_locs)
+CLINKAGE void FEM_Sym_coordinates(int elType,double *d_locs)
 {
        const char *caller="FEM_Sym_coordinates"; FEMAPI(caller);
        
@@ -424,7 +424,7 @@ CDECL void FEM_Sym_coordinates(int elType,double *d_locs)
                if (sym[i]!=(FEM_Symmetries_t)0)
                        sl.applyLoc(&locs[i],sym[i]);
 }
-FDECL void FTN_NAME(FEM_SYM_COORDINATES,fem_sym_coordinates)
+FLINKAGE void FTN_NAME(FEM_SYM_COORDINATES,fem_sym_coordinates)
        (int *elType,double *locs)
 {
        FEM_Sym_coordinates(zeroToMinusOne(*elType),locs);
@@ -433,13 +433,13 @@ FDECL void FTN_NAME(FEM_SYM_COORDINATES,fem_sym_coordinates)
 
 /********** Low-Level (canonicalization array) API **********/
 
-CDECL void FEM_Set_sym_nodes(const int *canon,const int *sym)
+CLINKAGE void FEM_Set_sym_nodes(const int *canon,const int *sym)
 {
        const char *caller="FEM_Set_sym_nodes"; FEMAPI(caller);
        int n=FEM_chunk::get(caller)->setMesh(caller)->node.size();
        FEM_curPartition().setSymmetries(n,CkCopyArray(canon,n,0),sym);
 }
-FDECL void FTN_NAME(FEM_SET_SYM_NODES,fem_set_sym_nodes)
+FLINKAGE void FTN_NAME(FEM_SET_SYM_NODES,fem_set_sym_nodes)
        (const int *canon,const int *sym)
 {
        const char *caller="FEM_Set_sym_nodes"; FEMAPI(caller);
index a09556f1532ab1b286a02d908f948377c636c3b9..2e762225c4440381093bc005ccf0e0feef1dcd21 100644 (file)
@@ -43,7 +43,7 @@ void FEM_REFINE2D_Init(){
   REFINE2D_Init();     
 }
 
-FDECL void FTN_NAME(FEM_REFINE2D_INIT,fem_refine2d_init)(void)
+FLINKAGE void FTN_NAME(FEM_REFINE2D_INIT,fem_refine2d_init)(void)
 {
   FEM_REFINE2D_Init();
 }
@@ -102,7 +102,7 @@ void FEM_REFINE2D_Newmesh(int meshID,int nodeID,int elemID,int nodeBoundary){
   delete [] tempMesh;
 }
 
-FDECL void FTN_NAME(FEM_REFINE2D_NEWMESH,fem_refine2d_newmesh)(int *meshID,int *nodeID,int *elemID, int *nodeBoundary)
+FLINKAGE void FTN_NAME(FEM_REFINE2D_NEWMESH,fem_refine2d_newmesh)(int *meshID,int *nodeID,int *elemID, int *nodeBoundary)
 {
   FEM_REFINE2D_Newmesh(*meshID,*nodeID,*elemID,*nodeBoundary);
 }
@@ -443,15 +443,15 @@ void FEM_Refine_Operation(FEM_Refine_Operation_Data *data,refineData &op){
 }
 
 
-FDECL void FTN_NAME(FEM_REFINE2D_SPLIT,fem_refine2d_split)(int *meshID,int *nodeID,double *coord,int *elemID,double *desiredAreas){
+FLINKAGE void FTN_NAME(FEM_REFINE2D_SPLIT,fem_refine2d_split)(int *meshID,int *nodeID,double *coord,int *elemID,double *desiredAreas){
        FEM_REFINE2D_Split(*meshID,*nodeID,coord,*elemID,desiredAreas);
 }
 
-FDECL void FTN_NAME(FEM_REFINE2D_SPLIT_EDGE,fem_refine2d_split_edge)(int *meshID,int *nodeID,double *coord,int *elemID,double *desiredAreas,int *sparseID){
+FLINKAGE void FTN_NAME(FEM_REFINE2D_SPLIT_EDGE,fem_refine2d_split_edge)(int *meshID,int *nodeID,double *coord,int *elemID,double *desiredAreas,int *sparseID){
        FEM_REFINE2D_Split(*meshID,*nodeID,coord,*elemID,desiredAreas,*sparseID);
 }
 
-FDECL void FTN_NAME(CMIMEMORYCHECK,cmimemorycheck)(){
+FLINKAGE void FTN_NAME(CMIMEMORYCHECK,cmimemorycheck)(){
        CmiMemoryCheck();
 }
 
@@ -686,7 +686,7 @@ void FEM_Coarsen_Operation(FEM_Operation_Data *coarsen_data, coarsenData &operat
 };
 
 
-FDECL void FTN_NAME(FEM_REFINE2D_COARSEN,fem_refine2d_coarsen)(int *meshID,int *nodeID,double *coord,int *elemID,double *desiredAreas,int *sparseID){
+FLINKAGE void FTN_NAME(FEM_REFINE2D_COARSEN,fem_refine2d_coarsen)(int *meshID,int *nodeID,double *coord,int *elemID,double *desiredAreas,int *sparseID){
   FEM_REFINE2D_Coarsen(*meshID,*nodeID,coord,*elemID,desiredAreas,*sparseID);
 }
 
index 0a1874a40575d78a06512f3956b56b099365f324..bd7df668adf861087744f0b899ac91a1d0e6d23d 100644 (file)
@@ -13,7 +13,7 @@
 #include "refine.h"
 
 /********************* Attach *****************/
-CDECL void REFINE2D_Init(void) {
+CLINKAGE void REFINE2D_Init(void) {
   TCHARM_API_TRACE("REFINE2D_Init", "refine");
   TCharm *tc=TCharm::get();
   
@@ -37,13 +37,13 @@ CDECL void REFINE2D_Init(void) {
   mesh[rank].insert(cm);
   tc->suspend(); /* will resume from chunk constructor */
 }
-FDECL void FTN_NAME(REFINE2D_INIT,refine2d_init)(void)
+FLINKAGE void FTN_NAME(REFINE2D_INIT,refine2d_init)(void)
 {
   REFINE2D_Init();
 }
 
 /******************** NewMesh *******************/
-CDECL void REFINE2D_NewMesh(int meshID,int nEl,int nGhost,int nnodes,const int *conn,const int *gid,const int *boundaries, const int *edgeBounds, const int *edgeConn, int nEdges)
+CLINKAGE void REFINE2D_NewMesh(int meshID,int nEl,int nGhost,int nnodes,const int *conn,const int *gid,const int *boundaries, const int *edgeBounds, const int *edgeConn, int nEdges)
 {
   TCHARM_API_TRACE("REFINE2D_NewMesh", "refine");
   if (!CtvAccess(_refineChunk))
@@ -55,7 +55,7 @@ CDECL void REFINE2D_NewMesh(int meshID,int nEl,int nGhost,int nnodes,const int *
   CkWaitQD();
 }
 /*
-FDECL void FTN_NAME(REFINE2D_NEWMESH,refine2d_newmesh)
+FLINKAGE void FTN_NAME(REFINE2D_NEWMESH,refine2d_newmesh)
 (int *nEl,int *nGhost,int nnodes,const int *conn,const int *gid,const int *boundaries, const int **edgeBoundaries)
 {
   TCHARM_API_TRACE("REFINE2D_NewMesh", "refine");
@@ -241,7 +241,7 @@ public:
 
 
 // this function should be called from a thread
-CDECL void REFINE2D_Split(int nNode,double *coord,int nEl,double *desiredArea,FEM_Refine_Operation_Data *refine_data)
+CLINKAGE void REFINE2D_Split(int nNode,double *coord,int nEl,double *desiredArea,FEM_Refine_Operation_Data *refine_data)
 {
   TCHARM_API_TRACE("REFINE2D_Split", "refine");
   chunk *C = CtvAccess(_refineChunk);
@@ -254,7 +254,7 @@ CDECL void REFINE2D_Split(int nNode,double *coord,int nEl,double *desiredArea,FE
   C->multipleRefine(desiredArea, &client);
 }
 
-CDECL void REFINE2D_Coarsen(int nNode, double *coord, int nEl,
+CLINKAGE void REFINE2D_Coarsen(int nNode, double *coord, int nEl,
                            double *desiredArea, FEM_Operation_Data *data)
 {
   TCHARM_API_TRACE("REFINE2D_Coarsen", "coarsen");
@@ -269,7 +269,7 @@ CDECL void REFINE2D_Coarsen(int nNode, double *coord, int nEl,
 }
 
 
-FDECL void FTN_NAME(REFINE2D_SPLIT,refine2d_split)
+FLINKAGE void FTN_NAME(REFINE2D_SPLIT,refine2d_split)
    (int *nNode,double *coord,int *nEl,double *desiredArea,FEM_Refine_Operation_Data *data)
 {
   REFINE2D_Split(*nNode,coord,*nEl,desiredArea,data);
@@ -285,24 +285,24 @@ static refineResults *getResults(void) {
   return ret;
 }
 
-CDECL int REFINE2D_Get_Split_Length(void)
+CLINKAGE int REFINE2D_Get_Split_Length(void)
 {
   TCHARM_API_TRACE("REFINE2D_Get_Split_Length", "refine");
   return getResults()->countResults();
 }
-FDECL int FTN_NAME(REFINE2D_GET_SPLIT_LENGTH,refine2d_get_split_length)(void)
+FLINKAGE int FTN_NAME(REFINE2D_GET_SPLIT_LENGTH,refine2d_get_split_length)(void)
 {
   return REFINE2D_Get_Split_Length();
 }
 
-CDECL void REFINE2D_Get_Split
+CLINKAGE void REFINE2D_Get_Split
     (int splitNo,refineData *d)
 {
   TCHARM_API_TRACE("REFINE2D_Get_Split", "refine");
   refineResults *r=getResults();
   r->extract(splitNo,d);
 }
-FDECL void FTN_NAME(REFINE2D_GET_SPLIT,refine2d_get_split)
+FLINKAGE void FTN_NAME(REFINE2D_GET_SPLIT,refine2d_get_split)
     (int *splitNo,refineData *d)
 {
   TCHARM_API_TRACE("REFINE2D_Get_Split", "refine");
@@ -321,15 +321,15 @@ static coarsenResults *getCoarsenResults(void) {
 }
 
 
-CDECL int REFINE2D_Get_Collapse_Length(){
+CLINKAGE int REFINE2D_Get_Collapse_Length(){
   return getCoarsenResults()->countResults();
 }
 /*
-CDECL void REFINE2D_Get_Collapse(int i,int *conn,int *tri,int *nodeToThrow,int *nodeToKeep,double *nx,double *ny,int *flag,int idxbase){
+CLINKAGE void REFINE2D_Get_Collapse(int i,int *conn,int *tri,int *nodeToThrow,int *nodeToKeep,double *nx,double *ny,int *flag,int idxbase){
        return getCoarsenResults()->extract(i,conn,tri,nodeToThrow,nodeToKeep,nx,ny,flag,idxbase);
 }*/
 
-CDECL void REFINE2D_Get_Collapse(int i,coarsenData *output){
+CLINKAGE void REFINE2D_Get_Collapse(int i,coarsenData *output){
        getCoarsenResults()->extract(i,output);
 }
 
@@ -385,10 +385,10 @@ static void checkConn(int nEl,const int *conn,int idxBase,int nNode)
   }
 }
 
-CDECL void REFINE2D_Check(int nEl,const int *conn,int nNodes) {
+CLINKAGE void REFINE2D_Check(int nEl,const int *conn,int nNodes) {
   checkConn(nEl,conn,0,nNodes);
 }
-FDECL void FTN_NAME(REFINE2D_CHECK,refine2d_check)
+FLINKAGE void FTN_NAME(REFINE2D_CHECK,refine2d_check)
   (int *nEl,const int *conn,int *nNodes)
 {
   checkConn(*nEl,conn,1,*nNodes);
index b6527af675b4dc8fad545451cd494f75047ca386..45f3be4af7628641010d1bf10aa08860f0aaeaa5 100644 (file)
@@ -816,13 +816,13 @@ class Builtin_kvs{
 
 // ------------ startup support -----------
 int _ampi_fallback_setup_count = -1;
-CDECL void AMPI_Setup(void);
-FDECL void FTN_NAME(AMPI_SETUP,ampi_setup)(void);
+CLINKAGE void AMPI_Setup(void);
+FLINKAGE void FTN_NAME(AMPI_SETUP,ampi_setup)(void);
 
-FDECL void FTN_NAME(MPI_MAIN,mpi_main)(void);
+FLINKAGE void FTN_NAME(MPI_MAIN,mpi_main)(void);
 
 /*Main routine used when missing MPI_Setup routine*/
-CDECL
+CLINKAGE
 void AMPI_Fallback_Main(int argc,char **argv)
 {
   AMPI_Main_cpp();
@@ -835,7 +835,7 @@ void ampiCreateMain(MPI_MainFn mainFn, const char *name,int nameLen);
 /*Startup routine used if user *doesn't* write
   a TCHARM_User_setup routine.
  */
-CDECL
+CLINKAGE
 void AMPI_Setup_Switch(void) {
   _ampi_fallback_setup_count=0;
   FTN_NAME(AMPI_SETUP,ampi_setup)();
@@ -857,7 +857,7 @@ CkpvDeclare(Builtin_kvs, bikvs);
 CkpvDeclare(int, ampiThreadLevel);
 CkpvDeclare(AmpiMsgPool, msgPool);
 
-CDECL
+CLINKAGE
 long ampiCurrentStackUsage(void){
   int localVariable;
 
@@ -870,13 +870,13 @@ long ampiCurrentStackUsage(void){
     return  p2 - p1;
 }
 
-FDECL
+FLINKAGE
 void FTN_NAME(AMPICURRENTSTACKUSAGE, ampicurrentstackusage)(void){
   long usage = ampiCurrentStackUsage();
   CkPrintf("[%d] Stack usage is currently %ld\n", CkMyPe(), usage);
 }
 
-CDECL
+CLINKAGE
 void AMPI_threadstart(void *data);
 static int AMPI_threadstart_idx = -1;
 
@@ -1063,7 +1063,7 @@ class MPI_threadstart_t {
 };
 PUPmarshall(MPI_threadstart_t)
 
-CDECL
+CLINKAGE
 void AMPI_threadstart(void *data)
 {
   STARTUP_DEBUG("MPI_threadstart")
@@ -2146,7 +2146,7 @@ void ampi::split(int color,int key,MPI_Comm *dest, int type) noexcept
 #endif
 }
 
-CDECL
+CLINKAGE
 int compareAmpiSplitKey(const void *a_, const void *b_) {
   const ampiSplitKey *a=(const ampiSplitKey *)a_;
   const ampiSplitKey *b=(const ampiSplitKey *)b_;
@@ -4052,7 +4052,7 @@ void ampiMarkAtexit()
   atexit_called = true;
 }
 
-CDECL
+CLINKAGE
 void AMPI_Exit(int exitCode)
 {
   // If we are not actually running AMPI code (e.g., by compiling a serial
@@ -4064,7 +4064,7 @@ void AMPI_Exit(int exitCode)
     TCHARM_Done(exitCode);
 }
 
-FDECL
+FLINKAGE
 void FTN_NAME(MPI_EXIT,mpi_exit)(int *exitCode)
 {
   AMPI_Exit(*exitCode);
@@ -10702,7 +10702,7 @@ AMPI_API_IMPL(int, MPI_Pcontrol, const int level, ...)
 
 /******** AMPI Extensions to the MPI standard *********/
 
-CDECL
+CLINKAGE
 int AMPI_Migrate(MPI_Info hints)
 {
   AMPI_API("AMPI_Migrate");
@@ -10791,7 +10791,7 @@ int AMPI_Migrate(MPI_Info hints)
 }
 
 #if CMK_FAULT_EVAC
-CDECL
+CLINKAGE
 int AMPI_Evacuate(void)
 {
   //AMPI_API("AMPI_Evacuate");
@@ -10800,7 +10800,7 @@ int AMPI_Evacuate(void)
 }
 #endif
 
-CDECL
+CLINKAGE
 int AMPI_Migrate_to_pe(int dest)
 {
   AMPI_API("AMPI_Migrate_to_pe");
@@ -10811,7 +10811,7 @@ int AMPI_Migrate_to_pe(int dest)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Set_migratable(int mig)
 {
   AMPI_API("AMPI_Set_migratable");
@@ -10823,7 +10823,7 @@ int AMPI_Set_migratable(int mig)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Load_start_measure(void)
 {
   AMPI_API("AMPI_Load_start_measure");
@@ -10831,7 +10831,7 @@ int AMPI_Load_start_measure(void)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Load_stop_measure(void)
 {
   AMPI_API("AMPI_Load_stop_measure");
@@ -10839,7 +10839,7 @@ int AMPI_Load_stop_measure(void)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Load_reset_measure(void)
 {
   AMPI_API("AMPI_Load_reset_measure");
@@ -10847,7 +10847,7 @@ int AMPI_Load_reset_measure(void)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Load_set_value(double value)
 {
   AMPI_API("AMPI_Load_set_value");
@@ -10860,7 +10860,7 @@ void _registerampif(void) {
   _registerampi();
 }
 
-CDECL
+CLINKAGE
 int AMPI_Register_main(MPI_MainFn mainFn,const char *name)
 {
   AMPI_API("AMPI_Register_main");
@@ -10871,7 +10871,7 @@ int AMPI_Register_main(MPI_MainFn mainFn,const char *name)
   return MPI_SUCCESS;
 }
 
-FDECL
+FLINKAGE
 void FTN_NAME(MPI_REGISTER_MAIN,mpi_register_main)
 (MPI_MainFn mainFn,const char *name,int nameLen)
 {
@@ -10882,7 +10882,7 @@ void FTN_NAME(MPI_REGISTER_MAIN,mpi_register_main)
   }
 }
 
-CDECL
+CLINKAGE
 int AMPI_Register_pup(MPI_PupFn fn, void *data, int *idx)
 {
   AMPI_API("AMPI_Register_pup");
@@ -10890,7 +10890,7 @@ int AMPI_Register_pup(MPI_PupFn fn, void *data, int *idx)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Register_about_to_migrate(MPI_MigrateFn fn)
 {
   AMPI_API("AMPI_Register_about_to_migrate");
@@ -10899,7 +10899,7 @@ int AMPI_Register_about_to_migrate(MPI_MigrateFn fn)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Register_just_migrated(MPI_MigrateFn fn)
 {
   AMPI_API("AMPI_Register_just_migrated");
@@ -10908,7 +10908,7 @@ int AMPI_Register_just_migrated(MPI_MigrateFn fn)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Get_pup_data(int idx, void *data)
 {
   AMPI_API("AMPI_Get_pup_data");
@@ -10916,7 +10916,7 @@ int AMPI_Get_pup_data(int idx, void *data)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Type_is_contiguous(MPI_Datatype datatype, int *flag)
 {
   AMPI_API("AMPI_Type_is_contiguous");
@@ -10924,7 +10924,7 @@ int AMPI_Type_is_contiguous(MPI_Datatype datatype, int *flag)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Print(const char *str)
 {
   AMPI_API("AMPI_Print");
@@ -10933,7 +10933,7 @@ int AMPI_Print(const char *str)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Suspend(void)
 {
   AMPI_API("AMPI_Suspend");
@@ -10941,7 +10941,7 @@ int AMPI_Suspend(void)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Yield(void)
 {
   AMPI_API("AMPI_Yield");
@@ -10949,7 +10949,7 @@ int AMPI_Yield(void)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Resume(int dest, MPI_Comm comm)
 {
   AMPI_API("AMPI_Resume");
@@ -10957,20 +10957,20 @@ int AMPI_Resume(int dest, MPI_Comm comm)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_System(const char *cmd)
 {
   return TCHARM_System(cmd);
 }
 
-CDECL
+CLINKAGE
 int AMPI_Trace_begin(void)
 {
   traceBegin();
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Trace_end(void)
 {
   traceEnd();
@@ -11004,7 +11004,7 @@ extern "C" void startCFnCall(void *param,void *msg)
   delete (CkReductionMsg*)msg;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Set_start_event(MPI_Comm comm)
 {
   AMPI_API("AMPI_Set_start_event");
@@ -11030,7 +11030,7 @@ int AMPI_Set_start_event(MPI_Comm comm)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_Set_end_event(void)
 {
   AMPI_API("AMPI_Set_end_event");
@@ -11089,7 +11089,7 @@ void AMPI_GPU_complete(void *request, void* dummy) noexcept
 }
 
 /* Submit hapiWorkRequest and corresponding GPU request. */
-CDECL
+CLINKAGE
 int AMPI_GPU_Iinvoke_wr(hapiWorkRequest *to_call, MPI_Request *request)
 {
   AMPI_API("AMPI_GPU_Iinvoke");
@@ -11107,7 +11107,7 @@ int AMPI_GPU_Iinvoke_wr(hapiWorkRequest *to_call, MPI_Request *request)
 
 /* Submit GPU request that will be notified of completion once the previous
  * operations in the given CUDA stream are complete */
-CDECL
+CLINKAGE
 int AMPI_GPU_Iinvoke(cudaStream_t stream, MPI_Request *request)
 {
   AMPI_API("AMPI_GPU_Iinvoke");
@@ -11122,7 +11122,7 @@ int AMPI_GPU_Iinvoke(cudaStream_t stream, MPI_Request *request)
   hapiAddCallback(stream, cb);
 }
 
-CDECL
+CLINKAGE
 int AMPI_GPU_Invoke_wr(hapiWorkRequest *to_call)
 {
   AMPI_API("AMPI_GPU_Invoke");
@@ -11134,7 +11134,7 @@ int AMPI_GPU_Invoke_wr(hapiWorkRequest *to_call)
   return MPI_SUCCESS;
 }
 
-CDECL
+CLINKAGE
 int AMPI_GPU_Invoke(cudaStream_t stream)
 {
   AMPI_API("AMPI_GPU_Invoke");
index af7e80d4c92642665b488d0fdb4e9f42421869d5..4f74364c076d5943c5857b2d85cda803448a3e30 100644 (file)
@@ -1202,7 +1202,7 @@ AMPI_API_IMPL(int, MPI_Win_test, MPI_Win win, int *flag)
 }
 
 // FIX PLACE II
-CDECL
+CLINKAGE
 int AMPI_Iget(MPI_Aint orgdisp, int orgcnt, MPI_Datatype orgtype, int rank,
               MPI_Aint targdisp, int targcnt, MPI_Datatype targtype, MPI_Win win,
               MPI_Request *request) {
@@ -1214,7 +1214,7 @@ int AMPI_Iget(MPI_Aint orgdisp, int orgcnt, MPI_Datatype orgtype, int rank,
                       request);
 }
 
-CDECL
+CLINKAGE
 int AMPI_Iget_wait(MPI_Request *request, MPI_Status *status, MPI_Win win) {
   AMPI_API("AMPI_Iget_wait");
   WinStruct *winStruct = getAmpiParent()->getWinStruct(win);
@@ -1223,7 +1223,7 @@ int AMPI_Iget_wait(MPI_Request *request, MPI_Status *status, MPI_Win win) {
   return  ptr->winIgetWait(request,status);
 }
 
-CDECL
+CLINKAGE
 int AMPI_Iget_free(MPI_Request *request, MPI_Status *status, MPI_Win win) {
   AMPI_API("AMPI_Iget_free");
   WinStruct *winStruct = getAmpiParent()->getWinStruct(win);
@@ -1232,7 +1232,7 @@ int AMPI_Iget_free(MPI_Request *request, MPI_Status *status, MPI_Win win) {
   return  ptr->winIgetFree(request, status);
 }
 
-CDECL
+CLINKAGE
 int AMPI_Iget_data(void *data, MPI_Status status) {
   *((char**)data) = /*(void*)*/((AmpiMsg*)status.msg)->data;
   return MPI_SUCCESS;
index 2079af83cca6e8222cfa178ba6652d8cad51a818..a2af640a600d5515ae9e9e187c5a9cbe66af5556 100644 (file)
@@ -1,7 +1,7 @@
 #include "ampi.h"
 #include "ampiimpl.h"
 
-FDECL {
+FLINKAGE {
 #define mpi_send FTN_NAME( MPI_SEND , mpi_send )
 #define mpi_recv FTN_NAME( MPI_RECV , mpi_recv )
 #define mpi_mrecv FTN_NAME( MPI_MRECV , mpi_mrecv )
index 1c69f9ebfa2d71394527693a4f3d1a21a793d547..8bc5772ed6166d60f4c80c4a7e863e4a04241b00 100644 (file)
@@ -1,6 +1,6 @@
 #include "charm-api.h"
 
-FDECL void FTN_NAME(MPI_MAIN,mpi_main)(void)
+FLINKAGE void FTN_NAME(MPI_MAIN,mpi_main)(void)
 {
        
 }
index 69d44d3e210162b7404f8fc4f4d2ba53e167ed02..8affcc96bcfb3bc7b97a98e96e21fbe65aaca017 100644 (file)
@@ -3,7 +3,7 @@
 
 extern int _ampi_fallback_setup_count;
 
-FDECL void FTN_NAME(AMPI_SETUP,ampi_setup)(void)
+FLINKAGE void FTN_NAME(AMPI_SETUP,ampi_setup)(void)
 {
        _ampi_fallback_setup_count++;
 }
index 0e6633078aa775e48c95ebb5af569b286bb783a5..001a76721fb4f88a1c088346bd8677a97d2ef759 100644 (file)
@@ -1,6 +1,6 @@
 #include "charm-api.h"
 
-CDECL int AMPI_Main(int argc,char **argv)
+CLINKAGE int AMPI_Main(int argc,char **argv)
 {
        (void)argc; (void)argv;
        return 0;
index be47d1ac0ffe86358591f482ffd7edfd361bbca6..b62c0faaf4f8b2dd435164a25a8a86dff552e73d 100644 (file)
@@ -3,7 +3,7 @@
 
 extern int _ampi_fallback_setup_count;
 
-CDECL void AMPI_Setup(void)
+CLINKAGE void AMPI_Setup(void)
 {
        _ampi_fallback_setup_count++;
 }
index 5420b0038d9dd395a3ae3f4ed3762a1193b967b9..73c22c003b1ffc15f645d02f889a0095fb42d591 100644 (file)
@@ -12,7 +12,7 @@ int armci_nproc;
 
 // Bind the virtual processors in the armci library to TCharm's.
 // This is called by the user's thread when it starts up.
-CDECL int ARMCI_Init(void) {
+CLINKAGE int ARMCI_Init(void) {
   TCHARM_API_TRACE("ARMCI_Init", "armci");
   if (TCHARM_Element()==0) {
     CkArrayID threadsAID;
@@ -27,34 +27,34 @@ CDECL int ARMCI_Init(void) {
   return 0;
 }
 
-CDECL int ARMCI_Finalize(void) {
+CLINKAGE int ARMCI_Finalize(void) {
   TCHARM_API_TRACE("ARMCI_Finalize", "armci");
   TCHARM_Done(0);
   return 0;
 }
 
-CDECL void ARMCI_Cleanup(void) {
+CLINKAGE void ARMCI_Cleanup(void) {
   TCHARM_API_TRACE("ARMCI_Cleanup", "armci");
 }
 
-CDECL void ARMCI_Error(char *message, int code) {
+CLINKAGE void ARMCI_Error(char *message, int code) {
   TCHARM_API_TRACE("ARMCI_Error", "armci");
   ckerr << "armci error: " << message << " | code = " << code << endl;
 }
 
 
-CDECL int ARMCI_Procs(int *procs){
+CLINKAGE int ARMCI_Procs(int *procs){
   TCHARM_API_TRACE("ARMCI_Procs", "armci");
   *procs = TCHARM_Num_elements();
   return 0;
 }
-CDECL int ARMCI_Myid(int *myid){
+CLINKAGE int ARMCI_Myid(int *myid){
   TCHARM_API_TRACE("ARMCI_Myid", "armci");
   *myid = TCHARM_Element();
   return 0;
 }
 
-CDECL int ARMCI_GetV(
+CLINKAGE int ARMCI_GetV(
                armci_giov_t darr[], /* descriptor array */
                int len,              /* length of descriptor array */
                int proc              /* remote process(or) ID */
@@ -62,7 +62,7 @@ CDECL int ARMCI_GetV(
   return 0;
 }
 
-CDECL int ARMCI_NbGetV(
+CLINKAGE int ARMCI_NbGetV(
                armci_giov_t *dsrc_arr,
                int arr_len,
                int proc,
@@ -71,7 +71,7 @@ CDECL int ARMCI_NbGetV(
   return 0;
 }
 
-CDECL int ARMCI_PutV(
+CLINKAGE int ARMCI_PutV(
                armci_giov_t darr[], /* descriptor array */
                int len,              /* length of descriptor array */
                int proc              /* remote process(or) ID */
@@ -79,7 +79,7 @@ CDECL int ARMCI_PutV(
   return 0;
 }
 
-CDECL int ARMCI_NbPutV(
+CLINKAGE int ARMCI_NbPutV(
                armci_giov_t *dsrc_arr,
                int arr_len,
                int proc,
@@ -88,7 +88,7 @@ CDECL int ARMCI_NbPutV(
   return 0;
 }
 
-CDECL int ARMCI_AccV(
+CLINKAGE int ARMCI_AccV(
                int op,                /* operation code */
                void *scale,          /* scaling factor for accumulate */
                armci_giov_t darr[], /* descriptor array */
@@ -98,7 +98,7 @@ CDECL int ARMCI_AccV(
   return 0;
 }
         
-CDECL int ARMCI_NbAccV(
+CLINKAGE int ARMCI_NbAccV(
                int datatype, 
                void *scale, 
                armci_giov_t *dsrc_arr, 
@@ -110,14 +110,14 @@ CDECL int ARMCI_NbAccV(
 }
 
 // src is local memory, dst is remote address
-CDECL int ARMCI_Put(void *src, void *dst, int bytes, int proc) {
+CLINKAGE int ARMCI_Put(void *src, void *dst, int bytes, int proc) {
   TCHARM_API_TRACE("ARMCI_Put", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->put(src, dst, bytes, proc);
   return 0;
 }
 
-CDECL int ARMCI_NbPut(void *src, void* dst, int bytes, int proc, armci_hdl_t *handle){
+CLINKAGE int ARMCI_NbPut(void *src, void* dst, int bytes, int proc, armci_hdl_t *handle){
   TCHARM_API_TRACE("ARMCI_NbPut", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   if (handle != NULL) {
@@ -129,14 +129,14 @@ CDECL int ARMCI_NbPut(void *src, void* dst, int bytes, int proc, armci_hdl_t *ha
 }
 
 // src is remote memory addr, dst is local address
-CDECL int ARMCI_Get(void *src, void *dst, int bytes, int proc) {
+CLINKAGE int ARMCI_Get(void *src, void *dst, int bytes, int proc) {
   TCHARM_API_TRACE("ARMCI_Get", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->get(src, dst, bytes, proc);
   return 0;
 }
 
-CDECL int ARMCI_NbGet(void *src, void* dst, int bytes, int proc, armci_hdl_t *handle){
+CLINKAGE int ARMCI_NbGet(void *src, void* dst, int bytes, int proc, armci_hdl_t *handle){
   TCHARM_API_TRACE("ARMCI_NbGet", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   if (handle != NULL) {
@@ -147,16 +147,16 @@ CDECL int ARMCI_NbGet(void *src, void* dst, int bytes, int proc, armci_hdl_t *ha
   return 0;
 }
 
-CDECL int ARMCI_Acc(int datatype, void *scale, void* src, void* dst, int bytes, int proc){
+CLINKAGE int ARMCI_Acc(int datatype, void *scale, void* src, void* dst, int bytes, int proc){
   return 0;
 }
 
-CDECL int ARMCI_NbAcc(int datatype, void *scale, void* src, void* dst, int bytes, int proc, armci_hdl_t* handle) {
+CLINKAGE int ARMCI_NbAcc(int datatype, void *scale, void* src, void* dst, int bytes, int proc, armci_hdl_t* handle) {
   return 0;
 }
 
 // strided copy operations
-CDECL int ARMCI_PutS(void *src_ptr, int src_stride_ar[], 
+CLINKAGE int ARMCI_PutS(void *src_ptr, int src_stride_ar[],
                void *dst_ptr, int dst_stride_ar[],
                int count[], int stride_levels, int proc) {
   TCHARM_API_TRACE("ARMCI_PutS", "armci");
@@ -165,7 +165,7 @@ CDECL int ARMCI_PutS(void *src_ptr, int src_stride_ar[],
   return 0;
 }
 
-CDECL int ARMCI_NbPutS(
+CLINKAGE int ARMCI_NbPutS(
                 void *src_ptr,         /* ptr to 1st segment at source */
                 int src_stride_ar[], /* array of strides at source  */
                 void* dst_ptr,         /* ptr to 1st segment at dest */
@@ -193,7 +193,7 @@ CDECL int ARMCI_NbPutS(
   return 0;
 }
 
-CDECL int ARMCI_GetS(
+CLINKAGE int ARMCI_GetS(
                void *src_ptr,         /* pointer to 1st segment at source */
                int src_stride_ar[], /* array of strides at source */
                void* dst_ptr,         /* ptr to 1st segment at destination */
@@ -209,7 +209,7 @@ CDECL int ARMCI_GetS(
   return 0;
 }
 
-CDECL int ARMCI_NbGetS(
+CLINKAGE int ARMCI_NbGetS(
                void *src_ptr,         /* pointer to 1st segment at source */
                int src_stride_ar[], /* array of strides at source */
                void* dst_ptr,         /* ptr to 1st segment at destination */
@@ -237,7 +237,7 @@ CDECL int ARMCI_NbGetS(
   return 0;
 }
 
-CDECL int ARMCI_AccS(
+CLINKAGE int ARMCI_AccS(
                int  optype,           /* operation */
                void *scale,           /* scale factor x += scale*y */
                void *src_ptr,         /* pointer to 1st segment at source */
@@ -252,7 +252,7 @@ CDECL int ARMCI_AccS(
   return 0;
 }
 
-CDECL int ARMCI_NbAccS(
+CLINKAGE int ARMCI_NbAccS(
                int  optype,           /* operation */
                void *scale,           /* scale factor x += scale*y */
                void *src_ptr,         /* pointer to 1st segment at source */
@@ -273,25 +273,25 @@ CDECL int ARMCI_NbAccS(
   return 0;
 }
 
-CDECL int ARMCI_PutValueLong(long src, void* dst, int proc) { return 0; }
-CDECL int ARMCI_PutValueInt(int src, void* dst, int proc) { return 0; }
-CDECL int ARMCI_PutValueFloat(float src, void* dst, int proc) { return 0; }
-CDECL int ARMCI_PutValueDouble(double src, void* dst, int proc) { return 0; }
-CDECL int ARMCI_NbPutValueLong(long src, void* dst, int proc, armci_hdl_t* handle) { return 0; }
-CDECL int ARMCI_NbPutValueInt(int src, void* dst, int proc, armci_hdl_t* handle) { return 0; }
-CDECL int ARMCI_NbPutValueFloat(float src, void* dst, int proc, armci_hdl_t* handle) { return 0; }
-CDECL int ARMCI_NbPutValueDouble(double src, void* dst, int proc, armci_hdl_t* handle) { return 0; }
-CDECL long ARMCI_GetValueLong(void *src, int proc) { return 0; }
-CDECL int ARMCI_GetValueInt(void *src, int proc) { return 0; }
-CDECL float ARMCI_GetValueFloat(void *src, int proc) { return 0.0; }
-CDECL double ARMCI_GetValueDouble(void *src, int proc) { return 0.0; }
-CDECL long ARMCI_NbGetValueLong(void *src, int proc, armci_hdl_t* handle) { return 0; }
-CDECL int ARMCI_NbGetValueInt(void *src, int proc, armci_hdl_t* handle) { return 0; }
-CDECL float ARMCI_NbGetValueFloat(void *src, int proc, armci_hdl_t* handle) { return 0.0; }
-CDECL double ARMCI_NbGetValueDouble(void *src, int proc, armci_hdl_t* handle) { return 0.0; }
+CLINKAGE int ARMCI_PutValueLong(long src, void* dst, int proc) { return 0; }
+CLINKAGE int ARMCI_PutValueInt(int src, void* dst, int proc) { return 0; }
+CLINKAGE int ARMCI_PutValueFloat(float src, void* dst, int proc) { return 0; }
+CLINKAGE int ARMCI_PutValueDouble(double src, void* dst, int proc) { return 0; }
+CLINKAGE int ARMCI_NbPutValueLong(long src, void* dst, int proc, armci_hdl_t* handle) { return 0; }
+CLINKAGE int ARMCI_NbPutValueInt(int src, void* dst, int proc, armci_hdl_t* handle) { return 0; }
+CLINKAGE int ARMCI_NbPutValueFloat(float src, void* dst, int proc, armci_hdl_t* handle) { return 0; }
+CLINKAGE int ARMCI_NbPutValueDouble(double src, void* dst, int proc, armci_hdl_t* handle) { return 0; }
+CLINKAGE long ARMCI_GetValueLong(void *src, int proc) { return 0; }
+CLINKAGE int ARMCI_GetValueInt(void *src, int proc) { return 0; }
+CLINKAGE float ARMCI_GetValueFloat(void *src, int proc) { return 0.0; }
+CLINKAGE double ARMCI_GetValueDouble(void *src, int proc) { return 0.0; }
+CLINKAGE long ARMCI_NbGetValueLong(void *src, int proc, armci_hdl_t* handle) { return 0; }
+CLINKAGE int ARMCI_NbGetValueInt(void *src, int proc, armci_hdl_t* handle) { return 0; }
+CLINKAGE float ARMCI_NbGetValueFloat(void *src, int proc, armci_hdl_t* handle) { return 0.0; }
+CLINKAGE double ARMCI_NbGetValueDouble(void *src, int proc, armci_hdl_t* handle) { return 0.0; }
 
 // global completion operations
-CDECL int ARMCI_Wait(armci_hdl_t *handle){
+CLINKAGE int ARMCI_Wait(armci_hdl_t *handle){
   TCHARM_API_TRACE("ARMCI_Wait", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   if (handle != NULL) {
@@ -302,21 +302,21 @@ CDECL int ARMCI_Wait(armci_hdl_t *handle){
   return 0;
 }
 
-CDECL int ARMCI_WaitProc(int proc){
+CLINKAGE int ARMCI_WaitProc(int proc){
   TCHARM_API_TRACE("ARMCI_WaitProc", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->waitproc(proc);
   return 0;
 }
 
-CDECL int ARMCI_WaitAll(){
+CLINKAGE int ARMCI_WaitAll(){
   TCHARM_API_TRACE("ARMCI_WaitAll", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->waitall();
   return 0;
 }
 
-CDECL int ARMCI_Test(armci_hdl_t *handle){
+CLINKAGE int ARMCI_Test(armci_hdl_t *handle){
   TCHARM_API_TRACE("ARMCI_Test", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   if(vp->test(*handle))
@@ -325,7 +325,7 @@ CDECL int ARMCI_Test(armci_hdl_t *handle){
     return 1;
 }
 
-CDECL int ARMCI_Barrier(){
+CLINKAGE int ARMCI_Barrier(){
   TCHARM_API_TRACE("ARMCI_Barrier", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->barrier();
@@ -333,14 +333,14 @@ CDECL int ARMCI_Barrier(){
 }
 
 // these are no-ops because Put is blocking
-CDECL int ARMCI_Fence(int proc) {
+CLINKAGE int ARMCI_Fence(int proc) {
   TCHARM_API_TRACE("ARMCI_Fence", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->fence(proc);
   return 0;
 }
 
-CDECL int ARMCI_AllFence(void) {
+CLINKAGE int ARMCI_AllFence(void) {
   TCHARM_API_TRACE("ARMCI_AllFence", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->allfence();
@@ -351,7 +351,7 @@ CDECL int ARMCI_AllFence(void) {
 
 // malloc is a collective operation. The user is expected to allocate
 // and manage ptr_arr.
-CDECL int ARMCI_Malloc(void *ptr_arr[], armci_size_t bytes) {
+CLINKAGE int ARMCI_Malloc(void *ptr_arr[], armci_size_t bytes) {
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
 //  pointer ptr = malloc(bytes);
   pointer ptr = vp->BlockMalloc(bytes);
@@ -364,13 +364,13 @@ CDECL int ARMCI_Malloc(void *ptr_arr[], armci_size_t bytes) {
 // CmiIsomalloc does not return a value and no indication is given about
 // the success nor failure of the operation. Hence, it is assumed always
 // that free works.
-CDECL int ARMCI_Free(void *address) {
+CLINKAGE int ARMCI_Free(void *address) {
   CmiIsomallocBlockListFree(address);
 //  free(address);
   TCHARM_API_TRACE("ARMCI_Free", "armci");
   return 0;
 }
-CDECL void *ARMCI_Malloc_local(armci_size_t bytes){
+CLINKAGE void *ARMCI_Malloc_local(armci_size_t bytes){
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   pointer ptr = vp->BlockMalloc(bytes);
   TCHARM_API_TRACE("ARMCI_Malloc_local", "armci");
@@ -378,39 +378,39 @@ CDECL void *ARMCI_Malloc_local(armci_size_t bytes){
   return ptr;
 }
 
-CDECL int ARMCI_Free_local(void *ptr){
+CLINKAGE int ARMCI_Free_local(void *ptr){
   CmiIsomallocBlockListFree(ptr);
   TCHARM_API_TRACE("ARMCI_Free_local", "armci");
   //free(ptr);
   return 0;
 }
 
-CDECL void ARMCI_SET_AGGREGATE_HANDLE (armci_hdl_t* handle) { }
-CDECL void ARMCI_UNSET_AGGREGATE_HANDLE (armci_hdl_t* handle) { }
+CLINKAGE void ARMCI_SET_AGGREGATE_HANDLE (armci_hdl_t* handle) { }
+CLINKAGE void ARMCI_UNSET_AGGREGATE_HANDLE (armci_hdl_t* handle) { }
 
-CDECL int ARMCI_Rmw(int op, int *ploc, int *prem, int extra, int proc){
+CLINKAGE int ARMCI_Rmw(int op, int *ploc, int *prem, int extra, int proc){
   return 0;
 }
 
-CDECL int ARMCI_Create_mutexes(int num){
+CLINKAGE int ARMCI_Create_mutexes(int num){
   return 0;
 }
-CDECL int ARMCI_Destroy_mutexes(void){
+CLINKAGE int ARMCI_Destroy_mutexes(void){
   return 0;
 }
-CDECL void ARMCI_Lock(int mutex, int proc){
+CLINKAGE void ARMCI_Lock(int mutex, int proc){
 }
-CDECL void ARMCI_Unlock(int mutex, int proc){
+CLINKAGE void ARMCI_Unlock(int mutex, int proc){
 }
 
-CDECL int armci_notify(int proc){
+CLINKAGE int armci_notify(int proc){
   TCHARM_API_TRACE("armci_notify", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->notify(proc);
   return 0;
 }
 
-CDECL int armci_notify_wait(int proc, int *pval){
+CLINKAGE int armci_notify_wait(int proc, int *pval){
   TCHARM_API_TRACE("armci_notify_wait", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->notify_wait(proc);
@@ -419,99 +419,99 @@ CDECL int armci_notify_wait(int proc, int *pval){
 
 /* ********************************* */
 /* Collective Operations             */
-CDECL void armci_msg_brdcst(void *buffer, int len, int root) {
+CLINKAGE void armci_msg_brdcst(void *buffer, int len, int root) {
   armci_msg_bcast(buffer, len, root);
 }
 
-CDECL void armci_msg_bcast(void *buffer, int len, int root) {
+CLINKAGE void armci_msg_bcast(void *buffer, int len, int root) {
   TCHARM_API_TRACE("armci_msg_bcast", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->msgBcast(buffer, len, root);
 }
 
 // This does not look like an API actually used in ARMCI
-CDECL void armci_msg_gop2(void *x, int n, int type, char *op) {
+CLINKAGE void armci_msg_gop2(void *x, int n, int type, char *op) {
 }
 
-CDECL void armci_msg_igop(int *x, int n, char *op) {
+CLINKAGE void armci_msg_igop(int *x, int n, char *op) {
   TCHARM_API_TRACE("armci_msg_dgop", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->msgGop(x, n, op, ARMCI_INT);
 }
 
-CDECL void armci_msg_lgop(CmiInt8 *x, int n, char *op) {
+CLINKAGE void armci_msg_lgop(CmiInt8 *x, int n, char *op) {
   TCHARM_API_TRACE("armci_msg_lgop", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->msgGop(x, n, op, ARMCI_LONG);
 }
 
 /*
-CDECL void armci_msg_llgop(long long *x, int n, char *op) {
+CLINKAGE void armci_msg_llgop(long long *x, int n, char *op) {
   TCHARM_API_TRACE("armci_msg_llgop", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->msgGop(x, n, op, ARMCI_LONG_LONG);
 }
 */
 
-CDECL void armci_msg_fgop(float *x, int n, char *op) {
+CLINKAGE void armci_msg_fgop(float *x, int n, char *op) {
   TCHARM_API_TRACE("armci_msg_fgop", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->msgGop(x, n, op, ARMCI_FLOAT);
 }
 
-CDECL void armci_msg_dgop(double *x, int n, char *op) {
+CLINKAGE void armci_msg_dgop(double *x, int n, char *op) {
   TCHARM_API_TRACE("armci_msg_dgop", "armci");
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->msgGop(x, n, op, ARMCI_DOUBLE);
 }
 
-CDECL void armci_msg_barrier(void) {
+CLINKAGE void armci_msg_barrier(void) {
 }
 
-CDECL void armci_msg_reduce(void *x, int n, char *op, int type) {
+CLINKAGE void armci_msg_reduce(void *x, int n, char *op, int type) {
 }
 
 /* ******************************* */
 /* System Configuration            */
-CDECL int armci_domain_nprocs(armci_domain_t domain, int id) {
+CLINKAGE int armci_domain_nprocs(armci_domain_t domain, int id) {
   return -1;
 }
 
-CDECL int armci_domain_count(armci_domain_t domain) {
+CLINKAGE int armci_domain_count(armci_domain_t domain) {
   return -1;
 }
 
-CDECL int armci_domain_id(armci_domain_t domain, int glob_proc_id) {
+CLINKAGE int armci_domain_id(armci_domain_t domain, int glob_proc_id) {
   return -1;
 }
 
-CDECL int armci_domain_glob_proc_id(armci_domain_t domain, int id, 
+CLINKAGE int armci_domain_glob_proc_id(armci_domain_t domain, int id,
                                    int loc_proc_id) {
   return -1;
 }
 
-CDECL int armci_domain_my_id(armci_domain_t domain) {
+CLINKAGE int armci_domain_my_id(armci_domain_t domain) {
   return -1;
 }
 
 /* ********************************** */
 /* Charm++ Runtime Support Extensions */
 
-CDECL void ARMCI_Migrate(void){
+CLINKAGE void ARMCI_Migrate(void){
   TCHARM_API_TRACE("ARMCI_Migrate", "armci");
   TCHARM_Migrate();
 }
-CDECL void ARMCI_Async_Migrate(void){
+CLINKAGE void ARMCI_Async_Migrate(void){
   TCHARM_API_TRACE("ARMCI_Async_Migrate", "armci");
   TCHARM_Async_Migrate();
 }
-CDECL void ARMCI_Checkpoint(char* dname){
+CLINKAGE void ARMCI_Checkpoint(char* dname){
   TCHARM_API_TRACE("ARMCI_Checkpoint", "armci");
   ARMCI_Barrier();
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
   vp->startCheckpoint(dname);
 }
-CDECL void ARMCI_MemCheckpoint(void){
+CLINKAGE void ARMCI_MemCheckpoint(void){
   TCHARM_API_TRACE("ARMCI_MemCheckpoint", "armci");
   ARMCI_Barrier();
   ArmciVirtualProcessor *vp = CtvAccess(_armci_ptr);
index e975f00a7142c7b56627871d3616fc0209b8a4ce..0082aec343cf5403b8f80cc4115f5011827908c9 100644 (file)
@@ -279,7 +279,7 @@ CkArrayOptions TCHARMLIB_Bound_array(TCharm *tc,int mpi_comm) {
        return opts;
 }
 
-CDECL collide_t COLLIDE_Init(int mpi_comm,
+CLINKAGE collide_t COLLIDE_Init(int mpi_comm,
        const double *gridStart,const double *gridSize)
 {
        COLLIDEAPI("COLLIDE_Init");
@@ -317,7 +317,7 @@ threadCollide *COLLIDE_Lookup(collide_t c) {
        return ret;
 }
 
-CDECL void COLLIDE_Boxes(collide_t c,int nBox,const double *boxes)
+CLINKAGE void COLLIDE_Boxes(collide_t c,int nBox,const double *boxes)
 {
        COLLIDEAPI("COLLIDE_Boxes");
        COLLIDE_Lookup(c)->contribute(nBox,(const bbox3d *)boxes,NULL);
@@ -325,7 +325,7 @@ CDECL void COLLIDE_Boxes(collide_t c,int nBox,const double *boxes)
 FORTRAN_AS_C(COLLIDE_BOXES,COLLIDE_Boxes,collide_boxes,
        (int *c,int *n,double *box),(*c,*n,box))
 
-CDECL void COLLIDE_Boxes_prio(collide_t c,int nBox,const double *boxes,const int *prio)
+CLINKAGE void COLLIDE_Boxes_prio(collide_t c,int nBox,const double *boxes,const int *prio)
 {
        COLLIDEAPI("COLLIDE_Boxes_prio");
        COLLIDE_Lookup(c)->contribute(nBox,(const bbox3d *)boxes,prio);
@@ -333,7 +333,7 @@ CDECL void COLLIDE_Boxes_prio(collide_t c,int nBox,const double *boxes,const int
 FORTRAN_AS_C(COLLIDE_BOXES_PRIO,COLLIDE_Boxes_prio,collide_boxes_prio,
        (int *c,int *n,double *box,int *prio),(*c,*n,box,prio))
 
-CDECL int COLLIDE_Count(collide_t c) {
+CLINKAGE int COLLIDE_Count(collide_t c) {
        COLLIDEAPI("COLLIDE_Count");
        return COLLIDE_Lookup(c)->colls.size();
 }
@@ -352,16 +352,16 @@ static void getCollisionList(collide_t c,int *out,int indexBase) {
        free(in);
 }
 
-CDECL void COLLIDE_List(collide_t c,int *out) {
+CLINKAGE void COLLIDE_List(collide_t c,int *out) {
        COLLIDEAPI("COLLIDE_List");
        getCollisionList(c,out,0);
 }
-FDECL void FTN_NAME(COLLIDE_LIST,collide_list)(collide_t *c,int *out) {
+FLINKAGE void FTN_NAME(COLLIDE_LIST,collide_list)(collide_t *c,int *out) {
        COLLIDEAPI("COLLIDE_List");
        getCollisionList(*c,out,1);
 }
 
-CDECL void COLLIDE_Destroy(collide_t c) {
+CLINKAGE void COLLIDE_Destroy(collide_t c) {
        COLLIDEAPI("COLLIDE_Destroy");
        /* FIXME: delete entire array */
 }
index 4a0eb967cf22807afaf4c5ec1893db42860fb35c..43f6dbc12d1b07ff9f49cbb050e58db131412643 100644 (file)
@@ -1,2 +1,2 @@
 #include "charm-api.h"
-CDECL void driver(void) { }
+CLINKAGE void driver(void) { }
index 7d2c70e2d577f1eb7f28b18b5c13090e6962c096..bf715cf5d9500f137078a61488caa1fd8157e685 100644 (file)
@@ -3,6 +3,6 @@
 #if CMK_FORTRAN_USES_NOSCORE 
 /*Fortran and C fallbacks have the same name-- skip this.*/
 #else
-FDECL void FTN_NAME(DRIVER,driver)(void) { }
+FLINKAGE void FTN_NAME(DRIVER,driver)(void) { }
 #endif
 
index 407df599abca08b02485ad6ec46c48fe44de256a..5a321a57e184edf4e624a636db50f0286bf87ba5 100644 (file)
@@ -3,5 +3,5 @@
 #if CMK_FORTRAN_USES_NOSCORE    
 /*Fortran and C fallbacks have the same name-- skip this.*/
 #else
-FDECL void FTN_NAME(INIT,init)(void) { }
+FLINKAGE void FTN_NAME(INIT,init)(void) { }
 #endif
index f19f9cd582cbd7ff2bd1ec409fdb95c1ba9202a2..ab8f63a8733da83e2591075f5aa0adebae7075ae 100644 (file)
@@ -1,2 +1,2 @@
 #include "charm-api.h"
-CDECL void init(void) { }
+CLINKAGE void init(void) { }
index 7d4d1c821a3e73f6fe8b2a3362de272e6ed793a6..b47f6b35e6e326413000412627131f8bc27caed8 100644 (file)
@@ -33,7 +33,7 @@ void FEM_Abort(const char *caller,const char *sprintf_msg,
 // This is our TCharm global ID:
 enum {FEM_globalID=33};
 
-CDECL void pupFEM_Chunk(pup_er cp) {
+CLINKAGE void pupFEM_Chunk(pup_er cp) {
        PUP::er &p=*(PUP::er *)cp;
        FEMchunk *c=(FEMchunk *)TCHARM_Get_global(FEM_globalID);
        if (c==NULL) {
@@ -50,7 +50,7 @@ FEMchunk *FEMchunk::get(const char *caller) {
        return c;
 }
 
-CDECL void FEM_Init(FEM_Comm_t defaultComm)
+CLINKAGE void FEM_Init(FEM_Comm_t defaultComm)
 {
        IDXL_Init(defaultComm);
        if (!femLock) femLock = CmiCreateLock();
@@ -77,7 +77,7 @@ void FEM_Mesh_list::bad(int l,int bad_code,const char *caller) const {
                FEM_Abort(caller,"Re-used a deleted FEM Mesh ID %d",l);
 }
 
-CDECL int 
+CLINKAGE int
 FEM_Mesh_allocate(void) /* build new mesh */  
 {
        const char *caller="FEM_Mesh_allocate";FEMAPI(caller);
@@ -100,7 +100,7 @@ inline T *clonePointerViaPup(T *old) {
        return nu;
 }
 
-CDECL int
+CLINKAGE int
 FEM_Mesh_copy(int fem_mesh) {
        const char *caller="FEM_Mesh_copy";FEMAPI(caller);
        FEMchunk *c=FEMchunk::get(caller);
@@ -110,7 +110,7 @@ FORTRAN_AS_C_RETURN(int,
        FEM_MESH_COPY,FEM_Mesh_copy,fem_mesh_copy, (int *m),(*m))
 
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_deallocate(int fem_mesh) /* delete this local mesh */
 {
        if (fem_mesh!=-1) {
@@ -122,14 +122,14 @@ FEM_Mesh_deallocate(int fem_mesh) /* delete this local mesh */
 FORTRAN_AS_C(FEM_MESH_DEALLOCATE,FEM_Mesh_deallocate,fem_mesh_deallocate, (int *m),(*m))
 
 /* Mesh I/O */
-CDECL int 
+CLINKAGE int
 FEM_Mesh_read(const char *prefix,int partNo,int nParts) /* read parallel mesh from file */
 {
        const char *caller="FEM_Mesh_read";FEMAPI(caller);
        FEMchunk *c=FEMchunk::get(caller);
        return c->meshes.put(FEM_readMesh(prefix,partNo,nParts));
 }
-FDECL int
+FLINKAGE int
 FTN_NAME(FEM_MESH_READ,fem_mesh_read)(const char *n,int *partNo,int *nParts,int len) {
        char *s=new char[len+1]; strncpy(s,n,len); s[len]=(char)0;
        int ret=FEM_Mesh_read(s,*partNo,*nParts);
@@ -137,14 +137,14 @@ FTN_NAME(FEM_MESH_READ,fem_mesh_read)(const char *n,int *partNo,int *nParts,int
        return ret;
 }
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_write(int fem_mesh,const char *prefix,int partNo,int nParts) /* write parallel mesh to files */
 {
        const char *caller="FEM_Mesh_write";FEMAPI(caller);
        FEMchunk *c=FEMchunk::get(caller);
        FEM_writeMesh(c->meshes.lookup(fem_mesh,caller),prefix,partNo,nParts);
 }
-FDECL void
+FLINKAGE void
 FTN_NAME(FEM_MESH_WRITE,fem_mesh_write)(int *m,const char *n,int *partNo,int *nParts,int len) {
        char *s=new char[len+1]; strncpy(s,n,len); s[len]=(char)0;
        FEM_Mesh_write(*m,s,*partNo,*nParts);
@@ -152,7 +152,7 @@ FTN_NAME(FEM_MESH_WRITE,fem_mesh_write)(int *m,const char *n,int *partNo,int *nP
 }
 
 /* Mesh assembly/disassembly */
-CDECL int 
+CLINKAGE int
 FEM_Mesh_assemble(int nParts,const int *srcMeshes) {
        const char *caller="FEM_Mesh_assemble";FEMAPI(caller);
        FEMchunk *c=FEMchunk::get(caller);
@@ -218,7 +218,7 @@ public:
        }
 };
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_partition(int fem_mesh,int nParts,int *destMeshes) {
        const char *caller="FEM_Mesh_partition"; FEMAPI(caller);
        FEMchunk *c=FEMchunk::get(caller);
@@ -236,7 +236,7 @@ FORTRAN_AS_C(FEM_MESH_PARTITION,FEM_Mesh_partition,fem_mesh_partition,
 
 /* Mesh communication */
 
-CDECL int 
+CLINKAGE int
 FEM_Mesh_recv(int fromRank,int tag,FEM_Comm_t comm_context)
 {
        const char *caller="FEM_Mesh_recv";FEMAPI(caller);
@@ -250,7 +250,7 @@ FEM_Mesh_recv(int fromRank,int tag,FEM_Comm_t comm_context)
 FORTRAN_AS_C_RETURN(int,FEM_MESH_RECV,FEM_Mesh_recv,fem_mesh_recv, 
        (int *from,int *tag,int *comm),(*from,*tag,*comm))
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_send(int fem_mesh,int toRank,int tag,FEM_Comm_t comm_context)
 {
        const char *caller="FEM_Mesh_send";FEMAPI(caller);
@@ -262,7 +262,7 @@ FORTRAN_AS_C(FEM_MESH_SEND,FEM_Mesh_send,fem_mesh_send,
        (int *mesh,int *to,int *tag,int *comm),(*mesh,*to,*tag,*comm))
 
 
-CDECL int 
+CLINKAGE int
 FEM_Mesh_reduce(int fem_mesh,int masterRank,FEM_Comm_t comm_context)
 {
        int tag=89374;
@@ -297,7 +297,7 @@ FORTRAN_AS_C_RETURN(int,FEM_MESH_REDUCE,FEM_Mesh_reduce,fem_mesh_reduce,
 extern int FEM_Mesh_Parallel_broadcast(int fem_mesh,int masterRank,FEM_Comm_t comm_context);
 #endif
 
-CDECL int 
+CLINKAGE int
 FEM_Mesh_broadcast(int fem_mesh,int masterRank,FEM_Comm_t comm_context)
 {
 #ifndef FEM_PARALLEL_PART
@@ -330,7 +330,7 @@ FORTRAN_AS_C_RETURN(int,FEM_MESH_BROADCAST,FEM_Mesh_broadcast,fem_mesh_broadcast
        (int *mesh,int *rank,int *comm),(*mesh,*rank,*comm))
 
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_copy_globalno(int src_mesh,int dest_mesh)
 {
        const char *caller="FEM_Mesh_copy_globalno";FEMAPI(caller);
@@ -340,7 +340,7 @@ FEM_Mesh_copy_globalno(int src_mesh,int dest_mesh)
 }
 
 /* Tiny accessors */
-CDECL int FEM_Mesh_default_read(void)  /* return default fem_mesh used for read (get) calls below */
+CLINKAGE int FEM_Mesh_default_read(void)  /* return default fem_mesh used for read (get) calls below */
 {
        return FEMchunk::get("FEM_Mesh_default_read")->default_read;
 }
@@ -348,7 +348,7 @@ FORTRAN_AS_C_RETURN(int,
        FEM_MESH_DEFAULT_READ,FEM_Mesh_default_read,fem_mesh_default_read,
        (void),())
 
-CDECL int FEM_Mesh_default_write(void) /* return default fem_mesh used for write (set) calls below */
+CLINKAGE int FEM_Mesh_default_write(void) /* return default fem_mesh used for write (set) calls below */
 {
        return FEMchunk::get("FEM_Mesh_default_write")->default_write;
 }
@@ -356,13 +356,13 @@ FORTRAN_AS_C_RETURN(int,
        FEM_MESH_DEFAULT_WRITE,FEM_Mesh_default_write,fem_mesh_default_write,
        (void),())
 
-CDECL void FEM_Mesh_set_default_read(int fem_mesh)
+CLINKAGE void FEM_Mesh_set_default_read(int fem_mesh)
 {
        FEMchunk::get("FEM_Mesh_set_default_read")->default_read=fem_mesh;
 }
 FORTRAN_AS_C(FEM_MESH_SET_DEFAULT_READ,FEM_Mesh_set_default_read,fem_mesh_set_default_read,
        (int *m),(*m))
-CDECL void FEM_Mesh_set_default_write(int fem_mesh)
+CLINKAGE void FEM_Mesh_set_default_write(int fem_mesh)
 {
        FEMchunk::get("FEM_Mesh_set_default_write")->default_write=fem_mesh;
 }
@@ -406,13 +406,13 @@ FEM_Mesh *FEM_Mesh_lookup(int fem_mesh,const char *caller) {
 /****** Custom Partitioning API *******/
 
 //C bindings:
-CDECL void FEM_Set_partition(int *elem2chunk) {
+CLINKAGE void FEM_Set_partition(int *elem2chunk) {
        FEMAPI("FEM_Set_partition");
        FEM_curPartition().setPartition(elem2chunk,setMesh()->nElems(),0);
 }
 
 //Fortran bindings:
-FDECL void FTN_NAME(FEM_SET_PARTITION,fem_set_partition)
+FLINKAGE void FTN_NAME(FEM_SET_PARTITION,fem_set_partition)
        (int *elem2chunk) 
 {
        FEMAPI("FEM_Set_partition");
@@ -573,53 +573,53 @@ FEMchunk::readField(int fid, void *nodes, const char *fname)
 
 /******************************* C Bindings **********************************/
 
-CDECL int FEM_Register(void *_ud,FEM_PupFn _pup_ud)
+CLINKAGE int FEM_Register(void *_ud,FEM_PupFn _pup_ud)
 {
   FEMAPI("FEM_Register");
   return TCHARM_Register(_ud,_pup_ud);
 }
 
-CDECL void *FEM_Get_userdata(int n)
+CLINKAGE void *FEM_Get_userdata(int n)
 {
   FEMAPI("FEM_Get_userdata");
   return TCHARM_Get_userdata(n);
 }
 
-CDECL void FEM_Barrier(void) {TCHARM_Barrier();}
-FDECL void FTN_NAME(FEM_BARRIER,fem_barrier)(void) {TCHARM_Barrier();}
+CLINKAGE void FEM_Barrier(void) {TCHARM_Barrier();}
+FLINKAGE void FTN_NAME(FEM_BARRIER,fem_barrier)(void) {TCHARM_Barrier();}
 
-CDECL void
+CLINKAGE void
 FEM_Migrate(void)
 {
 //  TCHARM_Migrate();
   AMPI_Migrate();
 }
 
-CDECL void
+CLINKAGE void
 FEM_Async_Migrate(void)
 {
   TCHARM_Async_Migrate();
 }
 
-CDECL void 
+CLINKAGE void
 FEM_Done(void)
 {
   TCHARM_Done(0);
 }
 
-CDECL int 
+CLINKAGE int
 FEM_Create_simple_field(int base_type, int vec_len)
 {
   return IDXL_Layout_create(base_type,vec_len);
 }
 
-CDECL int 
+CLINKAGE int
 FEM_Create_field(int base_type, int vec_len, int init_offset, int distance)
 {
   return IDXL_Layout_offset(base_type,vec_len,init_offset,distance,0);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Update_field(int fid, void *nodes)
 {
   int mesh=FEM_Mesh_default_read();
@@ -627,46 +627,46 @@ FEM_Update_field(int fid, void *nodes)
   IDXL_Comm_sendsum(0,list,fid,nodes);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Reduce_field(int fid, const void *nodes, void *outbuf, int op)
 {
   const char *caller="FEM_Reduce_field"; FEMAPI(caller);
   FEMchunk::get(caller)->reduce_field(fid, nodes, outbuf, op);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Reduce(int fid, const void *inbuf, void *outbuf, int op)
 {
   const char *caller="FEM_Reduce";FEMAPI(caller);
   FEMchunk::get(caller)->reduce(fid, inbuf, outbuf, op);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Read_field(int fid, void *nodes, const char *fname)
 {
   const char *caller="FEM_Read_field";FEMAPI(caller);
   FEMchunk::get(caller)->readField(fid, nodes, fname);
 }
 
-CDECL int
+CLINKAGE int
 FEM_My_partition(void)
 {
   return TCHARM_Element();
 }
 
-CDECL int
+CLINKAGE int
 FEM_Num_partitions(void)
 {
   return TCHARM_Num_elements();
 }
 
-CDECL double
+CLINKAGE double
 FEM_Timer(void)
 {
   return TCHARM_Wall_timer();
 }
 
-CDECL void 
+CLINKAGE void
 FEM_Print(const char *str)
 {
   const char *caller="FEM_Print"; FEMAPI(caller);
@@ -680,33 +680,33 @@ static void do_print_partition(int fem_mesh,int idxBase) {
   cptr->print(fem_mesh,idxBase);
 }
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_print(int fem_mesh)
 {
   do_print_partition(fem_mesh,0);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Print_partition(void) {
   do_print_partition(FEM_Mesh_default_read(),0);
 }
 
-CDECL int FEM_Get_comm_partners(void)
+CLINKAGE int FEM_Get_comm_partners(void)
 {
        const char *caller="FEM_Get_Comm_Partners"; FEMAPI(caller);
        return FEMchunk::get(caller)->getComm().size();
 }
-CDECL int FEM_Get_comm_partner(int partnerNo)
+CLINKAGE int FEM_Get_comm_partner(int partnerNo)
 {
        const char *caller="FEM_Get_Comm_Partner"; FEMAPI(caller);
        return FEMchunk::get(caller)->getComm().getLocalList(partnerNo).getDest();
 }
-CDECL int FEM_Get_comm_count(int partnerNo)
+CLINKAGE int FEM_Get_comm_count(int partnerNo)
 {
        const char *caller="FEM_Get_Comm_Count"; FEMAPI(caller);
        return FEMchunk::get(caller)->getComm().getLocalList(partnerNo).size();
 }
-CDECL void FEM_Get_comm_nodes(int partnerNo,int *nodeNos)
+CLINKAGE void FEM_Get_comm_nodes(int partnerNo,int *nodeNos)
 {
        const char *caller="FEM_Get_comm_nodes"; FEMAPI(caller);
        const int *nNo=FEMchunk::get(caller)->getComm().getLocalList(partnerNo).getVec();
@@ -717,54 +717,54 @@ CDECL void FEM_Get_comm_nodes(int partnerNo,int *nodeNos)
 
 /************************ Fortran Bindings *********************************/
 
-FDECL int FTN_NAME(FEM_REGISTER,fem_register)
+FLINKAGE int FTN_NAME(FEM_REGISTER,fem_register)
   (void *userData,FEM_PupFn _pup_ud)
 { 
   return FEM_Register(userData,_pup_ud);
 }
 
-FDECL void FTN_NAME(FEM_MIGRATE,fem_migrate)
+FLINKAGE void FTN_NAME(FEM_MIGRATE,fem_migrate)
   (void)
 {
   FEM_Migrate();
 }
 
-FDECL void FTN_NAME(FEM_ASYNC_MIGRATE,fem_async_migrate)
+FLINKAGE void FTN_NAME(FEM_ASYNC_MIGRATE,fem_async_migrate)
   (void)
 {
   FEM_Async_Migrate();
 }
 
-FDECL int FTN_NAME(FEM_CREATE_SIMPLE_FIELD,fem_create_simple_field)
+FLINKAGE int FTN_NAME(FEM_CREATE_SIMPLE_FIELD,fem_create_simple_field)
   (int *bt, int *vl)
 {
   return FEM_Create_simple_field(*bt, *vl);
 }
-FDECL int FTN_NAME(FEM_CREATE_FIELD,fem_create_field)
+FLINKAGE int FTN_NAME(FEM_CREATE_FIELD,fem_create_field)
   (int *bt, int *vl, int *io, int *d)
 {
   return FEM_Create_field(*bt, *vl, *io, *d);
 }
 
-FDECL void FTN_NAME(FEM_UPDATE_FIELD,fem_update_field)
+FLINKAGE void FTN_NAME(FEM_UPDATE_FIELD,fem_update_field)
   (int *fid, void *nodes)
 {
   FEM_Update_field(*fid, nodes);
 }
 
-FDECL void  FTN_NAME(FEM_REDUCE_FIELD,fem_reduce_field)
+FLINKAGE void  FTN_NAME(FEM_REDUCE_FIELD,fem_reduce_field)
   (int *fid, void *nodes, void *outbuf, int *op)
 {
   FEM_Reduce_field(*fid, nodes, outbuf, *op);
 }
 
-FDECL void FTN_NAME(FEM_REDUCE,fem_reduce)
+FLINKAGE void FTN_NAME(FEM_REDUCE,fem_reduce)
   (int *fid, void *inbuf, void *outbuf, int *op)
 {
   FEM_Reduce(*fid, inbuf, outbuf, *op);
 }
 
-FDECL void FTN_NAME(FEM_READ_FIELD,fem_read_field)
+FLINKAGE void FTN_NAME(FEM_READ_FIELD,fem_read_field)
   (int *fid, void *nodes, char *fname, int len)
 {
   char *tmp = new char[len+1]; CHK(tmp);
@@ -774,32 +774,32 @@ FDECL void FTN_NAME(FEM_READ_FIELD,fem_read_field)
   delete[] tmp;
 }
 
-FDECL int FTN_NAME(FEM_MY_PARTITION,fem_my_partition)
+FLINKAGE int FTN_NAME(FEM_MY_PARTITION,fem_my_partition)
   (void)
 {
   return FEM_My_partition()+1;
 }
 
-FDECL int FTN_NAME(FEM_NUM_PARTITIONS,fem_num_partitions)
+FLINKAGE int FTN_NAME(FEM_NUM_PARTITIONS,fem_num_partitions)
   (void)
 {
   return FEM_Num_partitions();
 }
 
-FDECL double FTN_NAME(FEM_TIMER,fem_timer)
+FLINKAGE double FTN_NAME(FEM_TIMER,fem_timer)
   (void)
 {
   return FEM_Timer();
 }
 
 // Utility functions for Fortran
-FDECL int FTN_NAME(FOFFSETOF,foffsetof)
+FLINKAGE int FTN_NAME(FOFFSETOF,foffsetof)
   (void *first, void *second)
 {
   return (int)((char *)second - (char*)first);
 }
 
-FDECL void FTN_NAME(FEM_PRINT,fem_print)
+FLINKAGE void FTN_NAME(FEM_PRINT,fem_print)
   (char *str, int len)
 {
   char *tmpstr = new char[len+1]; CHK(tmpstr);
@@ -809,37 +809,37 @@ FDECL void FTN_NAME(FEM_PRINT,fem_print)
   delete[] tmpstr;
 }
 
-FDECL void FTN_NAME(FEM_MESH_PRINT,fem_mesh_print)
+FLINKAGE void FTN_NAME(FEM_MESH_PRINT,fem_mesh_print)
   (int *m)
 {
   do_print_partition(*m,1);
 }
-FDECL void FTN_NAME(FEM_PRINT_PARTITION,fem_print_partition)(void) {
+FLINKAGE void FTN_NAME(FEM_PRINT_PARTITION,fem_print_partition)(void) {
   do_print_partition(FEM_Mesh_default_read(),0);
 }
 
-FDECL void FTN_NAME(FEM_DONE,fem_done)
+FLINKAGE void FTN_NAME(FEM_DONE,fem_done)
   (void)
 {
   FEM_Done();
 }
 
-FDECL int FTN_NAME(FEM_GET_COMM_PARTNERS,fem_get_comm_partners)
+FLINKAGE int FTN_NAME(FEM_GET_COMM_PARTNERS,fem_get_comm_partners)
        (void)
 {
        return FEM_Get_comm_partners();
 }
-FDECL int FTN_NAME(FEM_GET_COMM_PARTNER,fem_get_comm_partner)
+FLINKAGE int FTN_NAME(FEM_GET_COMM_PARTNER,fem_get_comm_partner)
        (int *partnerNo)
 {
        return FEM_Get_comm_partner(*partnerNo-1)+1;
 }
-FDECL int FTN_NAME(FEM_GET_COMM_COUNT,fem_get_comm_count)
+FLINKAGE int FTN_NAME(FEM_GET_COMM_COUNT,fem_get_comm_count)
        (int *partnerNo)
 {
        return FEM_Get_comm_count(*partnerNo-1);
 }
-FDECL void FTN_NAME(FEM_GET_COMM_NODES,fem_get_comm_nodes)
+FLINKAGE void FTN_NAME(FEM_GET_COMM_NODES,fem_get_comm_nodes)
        (int *pNo,int *nodeNos)
 {
        const char *caller="FEM_GET_COMM_NODES"; FEMAPI(caller);
@@ -889,7 +889,7 @@ FEM_Ghost_Stencil::FEM_Ghost_Stencil(int elType_, int n_,bool addNodes_,
        }
 }
 
-CDECL void FEM_Add_ghost_stencil_type(int elType,int nElts,int addNodes,
+CLINKAGE void FEM_Add_ghost_stencil_type(int elType,int nElts,int addNodes,
        const int *ends,const int *adj2)
 {
        FEMAPI("FEM_Add_ghost_stencil_type");
@@ -897,7 +897,7 @@ CDECL void FEM_Add_ghost_stencil_type(int elType,int nElts,int addNodes,
                elType, nElts, addNodes==1, ends, adj2, 0);
        FEM_curPartition().addGhostStencil(s);
 }
-FDECL void FTN_NAME(FEM_ADD_GHOST_STENCIL_TYPE,fem_add_ghost_stencil_type)(
+FLINKAGE void FTN_NAME(FEM_ADD_GHOST_STENCIL_TYPE,fem_add_ghost_stencil_type)(
        int *elType,int *nElts,int *addNodes,
        const int *ends,const int *adj2)
 {
@@ -926,7 +926,7 @@ inline int globalElem2elType(const FEM_Mesh *m,int globalElem) {
  using one big array, instead of one array per element type.
  This one-piece format is more convenient for most users.
 */
-CDECL void FEM_Add_ghost_stencil(int nElts,int addNodes,
+CLINKAGE void FEM_Add_ghost_stencil(int nElts,int addNodes,
        const int *ends,const int *adj)
 {
        FEMAPI("FEM_Add_ghost_stencil");
@@ -963,7 +963,7 @@ CDECL void FEM_Add_ghost_stencil(int nElts,int addNodes,
        }
        FEM_curPartition().markGhostStencilLayer();
 }
-FDECL void FTN_NAME(FEM_ADD_GHOST_STENCIL,fem_add_ghost_stencil)(
+FLINKAGE void FTN_NAME(FEM_ADD_GHOST_STENCIL,fem_add_ghost_stencil)(
        int *nElts,int *addNodes,
        const int *ends,int *adj)
 {
@@ -975,14 +975,14 @@ FDECL void FTN_NAME(FEM_ADD_GHOST_STENCIL,fem_add_ghost_stencil)(
 }
 
 /******************** Ghost Layers *********************/
-CDECL void FEM_Add_ghost_layer(int nodesPerTuple,int doAddNodes)
+CLINKAGE void FEM_Add_ghost_layer(int nodesPerTuple,int doAddNodes)
 {
        FEMAPI("FEM_Add_ghost_layer");
        FEM_Ghost_Layer *cur=FEM_curPartition().addLayer();
        cur->nodesPerTuple=nodesPerTuple;
        cur->addNodes=(doAddNodes!=0);
 }
-FDECL void FTN_NAME(FEM_ADD_GHOST_LAYER,fem_add_ghost_layer)
+FLINKAGE void FTN_NAME(FEM_ADD_GHOST_LAYER,fem_add_ghost_layer)
        (int *nodesPerTuple,int *doAddNodes)
 { FEM_Add_ghost_layer(*nodesPerTuple,*doAddNodes); }
 
@@ -998,13 +998,13 @@ static void add_ghost_elem(int elType,int tuplesPerElem,const int *elem2tuple,in
                          tuplesPerElem*cur->nodesPerTuple,idxBase);
 }
 
-CDECL void FEM_Add_ghost_elem(int elType,int tuplesPerElem,const int *elem2tuple)
+CLINKAGE void FEM_Add_ghost_elem(int elType,int tuplesPerElem,const int *elem2tuple)
 { add_ghost_elem(elType,tuplesPerElem,elem2tuple,0); }
-FDECL void FTN_NAME(FEM_ADD_GHOST_ELEM,fem_add_ghost_elem)
+FLINKAGE void FTN_NAME(FEM_ADD_GHOST_ELEM,fem_add_ghost_elem)
        (int *FelType,int *FtuplesPerElem,const int *elem2tuple)
 { add_ghost_elem(*FelType,*FtuplesPerElem,elem2tuple,1); }
 
-CDECL void FEM_Update_ghost_field(int fid, int elType, void *v_data)
+CLINKAGE void FEM_Update_ghost_field(int fid, int elType, void *v_data)
 {
        int mesh=FEM_Mesh_default_read();
        int entity;
@@ -1019,7 +1019,7 @@ CDECL void FEM_Update_ghost_field(int fid, int elType, void *v_data)
        IDXL_Comm_recv(comm,src,fid,&data[nReal*bytesPerRec]); //Begin recv'ing ghosts after all reals
        IDXL_Comm_wait(comm);
 }
-FDECL void FTN_NAME(FEM_UPDATE_GHOST_FIELD,fem_update_ghost_field)
+FLINKAGE void FTN_NAME(FEM_UPDATE_GHOST_FIELD,fem_update_ghost_field)
        (int *fid, int *elemType, void *data)
 {
        int fElType=*elemType;
@@ -1098,26 +1098,26 @@ void FEMchunk::exchangeGhostLists(int elemType,
 }
 
 //List exchange API
-CDECL void FEM_Exchange_ghost_lists(int elemType,int nIdx,const int *localIdx)
+CLINKAGE void FEM_Exchange_ghost_lists(int elemType,int nIdx,const int *localIdx)
 {
        const char *caller="FEM_Exchange_Ghost_Lists"; FEMAPI(caller);
        FEMchunk::get(caller)->exchangeGhostLists(elemType,nIdx,localIdx,0);
 }
-FDECL void FTN_NAME(FEM_EXCHANGE_GHOST_LISTS,fem_exchange_ghost_lists)
+FLINKAGE void FTN_NAME(FEM_EXCHANGE_GHOST_LISTS,fem_exchange_ghost_lists)
        (int *elemType,int *nIdx,const int *localIdx)
 {
        const char *caller="FEM_exchange_ghost_lists"; FEMAPI(caller);
        FEMchunk::get(caller)->exchangeGhostLists(*elemType,*nIdx,localIdx,1);
 }
-CDECL int FEM_Get_ghost_list_length(void) 
+CLINKAGE int FEM_Get_ghost_list_length(void)
 {
        const char *caller="FEM_Get_Ghost_List_Length"; FEMAPI(caller);
        return FEMchunk::get(caller)->getList().size();
 }
-FDECL int FTN_NAME(FEM_GET_GHOST_LIST_LENGTH,fem_get_ghost_list_length)(void)
+FLINKAGE int FTN_NAME(FEM_GET_GHOST_LIST_LENGTH,fem_get_ghost_list_length)(void)
 { return FEM_Get_ghost_list_length();}
 
-CDECL void FEM_Get_ghost_list(int *dest)
+CLINKAGE void FEM_Get_ghost_list(int *dest)
 {
        const char *caller="FEM_Get_Ghost_List"; FEMAPI(caller);
        int i,len=FEM_Get_ghost_list_length();
@@ -1125,7 +1125,7 @@ CDECL void FEM_Get_ghost_list(int *dest)
        for (i=0;i<len;i++) dest[i]=src[i];
        FEMchunk::get(caller)->emptyList();
 }
-FDECL void FTN_NAME(FEM_GET_GHOST_LIST,fem_get_ghost_list)
+FLINKAGE void FTN_NAME(FEM_GET_GHOST_LIST,fem_get_ghost_list)
        (int *dest)
 {
        const char *caller="FEM_get_ghost_list"; FEMAPI(caller);
@@ -1196,7 +1196,7 @@ static CkVec<int> getRoccomPconn(int fem_mesh,int *ghost_len,const int *paneFmCh
        return pconn;
 }
 
-CDECL void FEM_Get_roccom_pconn_size(int fem_mesh,int *total_len,int *ghost_len)
+CLINKAGE void FEM_Get_roccom_pconn_size(int fem_mesh,int *total_len,int *ghost_len)
 {
        CkVec<int> pconn=getRoccomPconn(fem_mesh,ghost_len,NULL);
        *total_len=pconn.size();
@@ -1205,7 +1205,7 @@ FORTRAN_AS_C(FEM_GET_ROCCOM_PCONN_SIZE,FEM_Get_roccom_pconn_size,fem_get_roccom_
         (int *mesh,int *tl,int *gl), (*mesh,tl,gl)
 )
 
-CDECL void FEM_Get_roccom_pconn(int fem_mesh,const int *paneFmChunk,int *dest)
+CLINKAGE void FEM_Get_roccom_pconn(int fem_mesh,const int *paneFmChunk,int *dest)
 {
        CkVec<int> pconn=getRoccomPconn(fem_mesh,NULL,paneFmChunk);
        for (unsigned int i=0;i<pconn.size();i++)
@@ -1237,7 +1237,7 @@ const int* makeIDXLside(const int *src,const int *paneFmChunk,IDXL_Side &s) {
        return src;
 }
 
-CDECL void FEM_Set_roccom_pconn(int fem_mesh,const int *paneFmChunk,const int *src,int total_len,int ghost_len)
+CLINKAGE void FEM_Set_roccom_pconn(int fem_mesh,const int *paneFmChunk,const int *src,int total_len,int ghost_len)
 {
        const char *caller="FEM_Set_roccom_pconn"; FEMAPI(caller);
        FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
@@ -1268,7 +1268,7 @@ int commState(int entityNo,const IDXL_Side &s)
     Based on shared node communication list, compute 
     FEM_NODE FEM_GLOBALNO and FEM_NODE_PRIMARY
 */
-CDECL void FEM_Make_node_globalno(int fem_mesh,FEM_Comm_t comm_context)
+CLINKAGE void FEM_Make_node_globalno(int fem_mesh,FEM_Comm_t comm_context)
 {
        const char *caller="FEM_Make_node_globalno"; FEMAPI(caller);
        FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
@@ -1419,7 +1419,7 @@ FEMchunk::print(int fem_mesh,int idxBase)
  *
  */
 
-CDECL void FEM_Add_elem2face_tuples(int fem_mesh, int elem_type, int nodesPerTuple, int tuplesPerElem,const int *elem2tuple) 
+CLINKAGE void FEM_Add_elem2face_tuples(int fem_mesh, int elem_type, int nodesPerTuple, int tuplesPerElem,const int *elem2tuple)
 {
        FEMAPI("FEM_Add_elem2face_tuples");
        FEM_Mesh *m = FEM_Mesh_lookup(fem_mesh,"FEM_Add_elem2face_tuples");
index e3e3f7c87187625599ca2973fc419bed166730a7..cae01501f3ee38ba4778d924bc0d962c5aa9d8ed 100644 (file)
@@ -14,7 +14,7 @@ void FEM_ADAPT_Init(int meshID) {
   CtvAccess(_adaptAlgs) = meshP->getfmMM()->getfmAdaptAlgs();
   CtvAccess(_adaptAlgs)->FEM_Adapt_Algs_Init(FEM_DATA+0, FEM_BOUNDARY);
 }
-FDECL void FTN_NAME(FEM_ADAPT_INIT,fem_adapt_init)(int *meshID)
+FLINKAGE void FTN_NAME(FEM_ADAPT_INIT,fem_adapt_init)(int *meshID)
 {
   FEM_ADAPT_Init(*meshID);
 }
@@ -25,7 +25,7 @@ void FEM_ADAPT_Refine(int meshID, int qm, int method, double factor,
     FEM_Mesh* mesh = FEM_Mesh_lookup(meshID, "FEM_ADAPT_Refine");
     mesh->getfmMM()->getfmAdaptAlgs()->FEM_Refine(qm, method, factor, sizes);
 }
-FDECL void FTN_NAME(FEM_ADAPT_REFINE,fem_adapt_refine)(int* meshID, 
+FLINKAGE void FTN_NAME(FEM_ADAPT_REFINE,fem_adapt_refine)(int* meshID,
         int *qm, int *method, double *factor, double *sizes)
 {
   FEM_ADAPT_Refine(*meshID, *qm, *method, *factor, sizes);
@@ -37,7 +37,7 @@ FDECL void FTN_NAME(FEM_ADAPT_REFINE,fem_adapt_refine)(int* meshID,
     FEM_Mesh* mesh = FEM_Mesh_lookup(meshID, "FEM_ADAPT_Coarsen");
     mesh->getfmMM()->getfmAdaptAlgs()->FEM_Coarsen(qm, method, factor, sizes);
 }
-FDECL  void FTN_NAME(FEM_ADAPT_COARSEN,fem_adapt_coarsen)(int* meshID, 
+FLINKAGE  void FTN_NAME(FEM_ADAPT_COARSEN,fem_adapt_coarsen)(int* meshID,
         int *qm, int *method, double *factor, double *sizes)
 {
   FEM_ADAPT_Coarsen(*meshID, *qm, *method, *factor, sizes);
@@ -48,7 +48,7 @@ void FEM_ADAPT_AdaptMesh(int meshID, int qm, int method, double factor,
     FEM_Mesh* mesh = FEM_Mesh_lookup(meshID, "FEM_ADAPT_AdaptMesh");
     mesh->getfmMM()->getfmAdaptAlgs()->FEM_AdaptMesh(qm, method, factor, sizes);
 }
-FDECL void FTN_NAME(FEM_ADAPT_ADAPTMESH,fem_adapt_adaptmesh)(int* meshID, 
+FLINKAGE void FTN_NAME(FEM_ADAPT_ADAPTMESH,fem_adapt_adaptmesh)(int* meshID,
         int *qm, int *method, double *factor, double *sizes)
 {
   FEM_ADAPT_AdaptMesh(*meshID, *qm, *method, *factor, sizes);
@@ -59,7 +59,7 @@ FDECL void FTN_NAME(FEM_ADAPT_ADAPTMESH,fem_adapt_adaptmesh)(int* meshID,
   FEM_Mesh *meshP = FEM_Mesh_lookup(meshID, "FEM_ADAPT_SetElementSizeField");
   meshP->elem[0].setMeshSizing(elem, size);
 }
-FDECL  void FTN_NAME(FEM_ADAPT_SETELEMENTSIZEFIELD,fem_adapt_setelementsizefield)(int *meshID, int *elem, double *size)
+FLINKAGE  void FTN_NAME(FEM_ADAPT_SETELEMENTSIZEFIELD,fem_adapt_setelementsizefield)(int *meshID, int *elem, double *size)
 {
   FEM_ADAPT_SetElementSizeField(*meshID, *elem, *size);
 }
@@ -72,7 +72,7 @@ FDECL  void FTN_NAME(FEM_ADAPT_SETELEMENTSIZEFIELD,fem_adapt_setelementsizefield
     meshP->elem[0].setMeshSizing(i, sizes[i]);
   }
 }
-FDECL  void FTN_NAME(FEM_ADAPT_SETELEMENTSSIZEFIELD,fem_adapt_setelementssizefield)(int *meshID, double *sizes)
+FLINKAGE  void FTN_NAME(FEM_ADAPT_SETELEMENTSSIZEFIELD,fem_adapt_setelementssizefield)(int *meshID, double *sizes)
 {
   FEM_ADAPT_SetElementsSizeField(*meshID, sizes);
 }
@@ -82,7 +82,7 @@ void FEM_ADAPT_SetReferenceMesh(int meshID) {
     FEM_Mesh* mesh = FEM_Mesh_lookup(meshID, "FEM_ADAPT_SetReferenceMesh");
     mesh->getfmMM()->getfmAdaptAlgs()->SetReferenceMesh();
 }
-FDECL void FTN_NAME(FEM_ADAPT_SETREFERENCEMESH, fem_adapt_setreferencemesh)(int* meshID)
+FLINKAGE void FTN_NAME(FEM_ADAPT_SETREFERENCEMESH, fem_adapt_setreferencemesh)(int* meshID)
 {
     FEM_ADAPT_SetReferenceMesh(*meshID);
 }
@@ -93,7 +93,7 @@ void FEM_ADAPT_GradateMesh(int meshID, double smoothness)
     FEM_Mesh* mesh = FEM_Mesh_lookup(meshID, "FEM_ADAPT_GradateMesh");
     mesh->getfmMM()->getfmAdaptAlgs()->GradateMesh(smoothness);
 }
-FDECL void FTN_NAME(FEM_ADAPT_GRADATEMESH, fem_adapt_gradatemesh)(int* meshID, double* smoothness)
+FLINKAGE void FTN_NAME(FEM_ADAPT_GRADATEMESH, fem_adapt_gradatemesh)(int* meshID, double* smoothness)
 {
     FEM_ADAPT_GradateMesh(*meshID, *smoothness);
 }
index 7da65eacd40f54b5ccbd843a0a2141e0f938013e..e93a71fa0de0ee9672ecf00cf118f705fc00bcba 100644 (file)
@@ -8,36 +8,36 @@
 extern void _registerFEMMeshModify(void);
 
 void FEM_ADAPT_Init(int meshID);
-FDECL void FTN_NAME(FEM_ADAPT_INIT,fem_adapt_init)(int *meshID);
+FLINKAGE void FTN_NAME(FEM_ADAPT_INIT,fem_adapt_init)(int *meshID);
 
 
 void FEM_ADAPT_Refine(int meshID, int qm, int method, double factor, double *sizes);
-FDECL void FTN_NAME(FEM_ADAPT_REFINE,fem_adapt_refine)(int* meshID, 
+FLINKAGE void FTN_NAME(FEM_ADAPT_REFINE,fem_adapt_refine)(int* meshID,
         int *qm, int *method, double *factor, double *sizes);
 
 
 void FEM_ADAPT_Coarsen(int meshID, int qm, int method, double factor, 
         double *sizes);
-FDECL void FTN_NAME(FEM_ADAPT_COARSEN,fem_adapt_coarsen)(int* meshID, 
+FLINKAGE void FTN_NAME(FEM_ADAPT_COARSEN,fem_adapt_coarsen)(int* meshID,
         int *qm, int *method, double *factor, double *sizes);
 
 void FEM_ADAPT_AdaptMesh(int meshID, int qm, int method, double factor, double *sizes);
-FDECL void FTN_NAME(FEM_ADAPT_ADAPTMESH,fem_adapt_adaptmesh)(int* meshID, 
+FLINKAGE void FTN_NAME(FEM_ADAPT_ADAPTMESH,fem_adapt_adaptmesh)(int* meshID,
         int *qm, int *method, double *factor, double *sizes);
 
 void FEM_ADAPT_SetElementSizeField(int meshID, int elem, double size);
-FDECL void FTN_NAME(FEM_ADAPT_SETELEMENTSIZEFIELD,fem_adapt_setelementsizefield)(int *meshID, int *elem, double *size);
+FLINKAGE void FTN_NAME(FEM_ADAPT_SETELEMENTSIZEFIELD,fem_adapt_setelementsizefield)(int *meshID, int *elem, double *size);
 
 
 void FEM_ADAPT_SetElementsSizeField(int meshID, double *sizes);
-FDECL void FTN_NAME(FEM_ADAPT_SETELEMENTSSIZEFIELD,fem_adapt_setelementssizefield)(int *meshID, double *sizes);
+FLINKAGE void FTN_NAME(FEM_ADAPT_SETELEMENTSSIZEFIELD,fem_adapt_setelementssizefield)(int *meshID, double *sizes);
 
 
 void FEM_ADAPT_SetReferenceMesh(int meshID);
-FDECL void FTN_NAME(FEM_ADAPT_SETREFERENCEMESH, fem_adapt_setreferencemesh)(int* meshID);
+FLINKAGE void FTN_NAME(FEM_ADAPT_SETREFERENCEMESH, fem_adapt_setreferencemesh)(int* meshID);
 
 
 void FEM_ADAPT_GradateMesh(int meshID, double smoothness);
-FDECL void FTN_NAME(FEM_ADAPT_GRADATEMESH, fem_adapt_gradatemesh)(int* meshID, double* smoothness);
+FLINKAGE void FTN_NAME(FEM_ADAPT_GRADATEMESH, fem_adapt_gradatemesh)(int* meshID, double* smoothness);
 
 #endif
index 602fb0f64148e65dbcb71fa6eaf434f89aad153f..7733a59534281132d6e9c3cc67bb4cf23ebd2a03 100644 (file)
@@ -10,7 +10,7 @@ public, documented interfaces.
 */
 #include "fem.h"
 #include "fem_impl.h"
-#include "charm-api.h" /*for CDECL, FTN_NAME*/
+#include "charm-api.h" /*for CLINKAGE, FTN_NAME*/
 
 #define S FEM_Mesh_default_write()
 #define G FEM_Mesh_default_read()
@@ -74,7 +74,7 @@ static void mesh_data(int fem_mesh,int entity, int dtype,void *v_data) {
 /***************** Mesh Set ******************/
 
 // Lengths
-CDECL void FEM_Set_node(int nNodes,int doublePerNode) {
+CLINKAGE void FEM_Set_node(int nNodes,int doublePerNode) {
        FEM_Mesh_set_length(S,FEM_NODE,nNodes);
        FEM_Mesh_set_width(S,FEM_NODE,FEM_DATA,doublePerNode);
 }
@@ -82,7 +82,7 @@ FORTRAN_AS_C(FEM_SET_NODE,FEM_Set_node,fem_set_node,
        (int *n,int *d), (*n,*d)
 )
 
-CDECL void FEM_Set_elem(int elType,int n,int doublePerElem,int nodePerElem) {
+CLINKAGE void FEM_Set_elem(int elType,int n,int doublePerElem,int nodePerElem) {
        FEM_Mesh_set_length(S,FEM_ELEM+elType,n);
        FEM_Mesh_set_width(S,FEM_ELEM+elType,FEM_DATA,doublePerElem);
        FEM_Mesh_set_width(S,FEM_ELEM+elType,FEM_CONN,nodePerElem);
@@ -94,14 +94,14 @@ FORTRAN_AS_C(FEM_SET_ELEM,FEM_Set_elem,fem_set_elem,
 
 // Data
   // FIXME: add FEM_[GS]et_[node|elem]_data_c
-CDECL void FEM_Set_node_data(const double *data) {
+CLINKAGE void FEM_Set_node_data(const double *data) {
        mesh_data(S,FEM_NODE,FEM_DOUBLE,(void *)data);
 }
 FORTRAN_AS_C(FEM_SET_NODE_DATA_R,FEM_Set_node_data,fem_set_node_data_r,
        (const double *data), (data)
 )
 
-CDECL void FEM_Set_elem_data(int elType,const double *data) {
+CLINKAGE void FEM_Set_elem_data(int elType,const double *data) {
        mesh_data(S,FEM_ELEM+elType,FEM_DOUBLE,(void *)data);
 }
 FORTRAN_AS_C(FEM_SET_ELEM_DATA_R,FEM_Set_elem_data,fem_set_elem_data_r,
@@ -109,18 +109,18 @@ FORTRAN_AS_C(FEM_SET_ELEM_DATA_R,FEM_Set_elem_data,fem_set_elem_data_r,
 )
 
 // Connectivity
-CDECL void FEM_Set_elem_conn(int elType,const int *conn) {
+CLINKAGE void FEM_Set_elem_conn(int elType,const int *conn) {
        mesh_conn(S,FEM_ELEM+elType, (int *)conn, 0);
 }
 
-FDECL void FTN_NAME(FEM_SET_ELEM_CONN_R,fem_set_elem_conn_r)
+FLINKAGE void FTN_NAME(FEM_SET_ELEM_CONN_R,fem_set_elem_conn_r)
        (int *elType,const int *conn) 
 {
        mesh_conn(S,FEM_ELEM+*elType, (int *)conn, 1);
 }
 
 // Sparse
-CDECL void FEM_Set_sparse(int sid,int nRecords,
+CLINKAGE void FEM_Set_sparse(int sid,int nRecords,
        const int *nodes,int nodesPerRec,
        const void *data,int dataPerRec,int dataType) 
 {
@@ -128,7 +128,7 @@ CDECL void FEM_Set_sparse(int sid,int nRecords,
        FEM_Mesh_set_data(S,entity,FEM_CONN, (int *)nodes, 0,nRecords, FEM_INDEX_0,nodesPerRec);
        FEM_Mesh_set_data(S,entity,FEM_DATA, (void *)data, 0,nRecords, dataType,dataPerRec); 
 }
-FDECL void FTN_NAME(FEM_SET_SPARSE,fem_set_sparse)
+FLINKAGE void FTN_NAME(FEM_SET_SPARSE,fem_set_sparse)
        (int *sid,int *nRecords,
        const int *nodes,int *nodesPerRec,
        const void *data,int *dataPerRec,int *dataType) 
@@ -139,13 +139,13 @@ FDECL void FTN_NAME(FEM_SET_SPARSE,fem_set_sparse)
        FEM_Mesh_set_data(S,entity,FEM_DATA, (void *)data, 0,n, *dataType,*dataPerRec); 
 }
 
-CDECL void FEM_Set_sparse_elem(int sid,const int *rec2elem) 
+CLINKAGE void FEM_Set_sparse_elem(int sid,const int *rec2elem)
 {
        int entity=FEM_SPARSE+sid;
        int n=FEM_Mesh_get_length(S,FEM_SPARSE+sid);
        FEM_Mesh_set_data(S,entity,FEM_SPARSE_ELEM, (void *)rec2elem, 0,n, FEM_INDEX_0,2);
 }
-FDECL void FTN_NAME(FEM_SET_SPARSE_ELEM,fem_set_sparse_elem)
+FLINKAGE void FTN_NAME(FEM_SET_SPARSE_ELEM,fem_set_sparse_elem)
        (int *sid,int *rec2elem) 
 {
        int entity=FEM_SPARSE+*sid;
@@ -170,7 +170,7 @@ static int mesh_get_ghost_length(int mesh,int entity) {
 }
 
 // Lengths
-CDECL void FEM_Get_node(int *nNodes,int *perNode) {
+CLINKAGE void FEM_Get_node(int *nNodes,int *perNode) {
        *nNodes=mesh_get_ghost_length(G,FEM_NODE);
        *perNode=FEM_Mesh_get_width(G,FEM_NODE,FEM_DATA);
 }
@@ -178,7 +178,7 @@ FORTRAN_AS_C(FEM_GET_NODE,FEM_Get_node,fem_get_node,
        (int *n,int *per), (n,per))
 
 
-CDECL void FEM_Get_elem(int elType,int *nElem,int *doublePerElem,int *nodePerElem) {
+CLINKAGE void FEM_Get_elem(int elType,int *nElem,int *doublePerElem,int *nodePerElem) {
        *nElem=mesh_get_ghost_length(G,FEM_ELEM+elType);
        *doublePerElem=FEM_Mesh_get_width(G,FEM_ELEM+elType,FEM_DATA);
        *nodePerElem=FEM_Mesh_get_width(G,FEM_ELEM+elType,FEM_CONN);
@@ -187,13 +187,13 @@ FORTRAN_AS_C(FEM_GET_ELEM,FEM_Get_elem,fem_get_elem,
        (int *t,int *n,int *per,int *c), (*t,n,per,c))
 
 // Data
-CDECL void FEM_Get_node_data(double *data) {
+CLINKAGE void FEM_Get_node_data(double *data) {
        mesh_data(G,FEM_NODE,FEM_DOUBLE,data);
 }
 FORTRAN_AS_C(FEM_GET_NODE_DATA_R,FEM_Get_node_data,fem_get_node_data_r,
        (double *data), (data))
 
-CDECL void FEM_Get_elem_data(int elType,double *data) {
+CLINKAGE void FEM_Get_elem_data(int elType,double *data) {
        mesh_data(G,FEM_ELEM+elType,FEM_DOUBLE,data);
 }
 FORTRAN_AS_C(FEM_GET_ELEM_DATA_R,FEM_Get_elem_data,fem_get_elem_data_r,
@@ -201,11 +201,11 @@ FORTRAN_AS_C(FEM_GET_ELEM_DATA_R,FEM_Get_elem_data,fem_get_elem_data_r,
 
 
 // Connectivity
-CDECL void FEM_Get_elem_conn(int elType,int *conn) {
+CLINKAGE void FEM_Get_elem_conn(int elType,int *conn) {
        mesh_conn(G,FEM_ELEM+elType,conn,0);
 }
 
-FDECL void FTN_NAME(FEM_GET_ELEM_CONN_R, fem_get_elem_conn_r)
+FLINKAGE void FTN_NAME(FEM_GET_ELEM_CONN_R, fem_get_elem_conn_r)
        (int *elType,int *conn)
 {
        mesh_conn(G,FEM_ELEM+*elType,conn,1);
@@ -213,20 +213,20 @@ FDECL void FTN_NAME(FEM_GET_ELEM_CONN_R, fem_get_elem_conn_r)
 
 
 // Sparse
-CDECL int  FEM_Get_sparse_length(int sid) {
+CLINKAGE int  FEM_Get_sparse_length(int sid) {
        return mesh_get_ghost_length(G,FEM_SPARSE+sid);
 }
 FORTRAN_AS_C_RETURN(int, FEM_GET_SPARSE_LENGTH,FEM_Get_sparse_length,fem_get_sparse_length,
        (int *sid), (*sid))
 
-CDECL void FEM_Get_sparse(int sid,int *nodes,void *data) {
+CLINKAGE void FEM_Get_sparse(int sid,int *nodes,void *data) {
        int fem_mesh=G;
        int entity=FEM_SPARSE+sid;
        int dataType=FEM_Mesh_get_datatype(fem_mesh,entity,FEM_DATA);
        mesh_data(fem_mesh,entity,dataType,data);
        mesh_conn(fem_mesh,entity,nodes,0);
 }
-FDECL void FTN_NAME(FEM_GET_SPARSE,fem_get_sparse)(int *sid,int *nodes,void *data) {
+FLINKAGE void FTN_NAME(FEM_GET_SPARSE,fem_get_sparse)(int *sid,int *nodes,void *data) {
        int fem_mesh=G;
        int entity=FEM_SPARSE+*sid;
        int dataType=FEM_Mesh_get_datatype(fem_mesh,entity,FEM_DATA);
@@ -234,26 +234,26 @@ FDECL void FTN_NAME(FEM_GET_SPARSE,fem_get_sparse)(int *sid,int *nodes,void *dat
        mesh_conn(fem_mesh,entity,nodes,1);
 }
 
-CDECL int FEM_Get_node_ghost(void) 
+CLINKAGE int FEM_Get_node_ghost(void)
 { // Index of first ghost node==number of real nodes
        return FEM_Mesh_get_length(G,FEM_NODE);
 }
-FDECL int FTN_NAME(FEM_GET_NODE_GHOST,fem_get_node_ghost)(void) {
+FLINKAGE int FTN_NAME(FEM_GET_NODE_GHOST,fem_get_node_ghost)(void) {
        return 1+FEM_Get_node_ghost();
 }
 
-CDECL int FEM_Get_elem_ghost(int elemType) 
+CLINKAGE int FEM_Get_elem_ghost(int elemType)
 { // Index of first ghost element==number of real elements
        return FEM_Mesh_get_length(G,FEM_ELEM+elemType);
 } 
-FDECL int FTN_NAME(FEM_GET_ELEM_GHOST,fem_get_elem_ghost)(int *elType) {
+FLINKAGE int FTN_NAME(FEM_GET_ELEM_GHOST,fem_get_elem_ghost)(int *elType) {
        return 1+FEM_Get_elem_ghost(*elType);
 }
 
 
 /** Symmetries */
 
-CDECL void FEM_Get_sym(int elTypeOrMinusOne,int *destSym)
+CLINKAGE void FEM_Get_sym(int elTypeOrMinusOne,int *destSym)
 {
        const char *callingRoutine="FEM_Get_sym";
        FEMAPI(callingRoutine);
@@ -266,7 +266,7 @@ CDECL void FEM_Get_sym(int elTypeOrMinusOne,int *destSym)
        int g=l.getGhost()->size();
        for (i=0;i<g;i++) destSym[n+i]=l.getGhost()->getSymmetries(i);
 }
-FDECL void FTN_NAME(FEM_GET_SYM,fem_get_sym)
+FLINKAGE void FTN_NAME(FEM_GET_SYM,fem_get_sym)
        (int *elTypeOrZero,int *destSym)
 {
        FEM_Get_sym(zeroToMinusOne(*elTypeOrZero),destSym);
@@ -276,12 +276,12 @@ FDECL void FTN_NAME(FEM_GET_SYM,fem_get_sym)
 
 /** Ancient compatability */
 
-CDECL void FEM_Set_mesh(int nelem, int nnodes, int nodePerElem, int* conn) {
+CLINKAGE void FEM_Set_mesh(int nelem, int nnodes, int nodePerElem, int* conn) {
        FEM_Set_node(nnodes,0);
        FEM_Set_elem(0,nelem,0,nodePerElem);
        FEM_Set_elem_conn(0,conn);
 }
-FDECL void FTN_NAME(FEM_SET_MESH,fem_set_mesh)
+FLINKAGE void FTN_NAME(FEM_SET_MESH,fem_set_mesh)
         (int *nelem, int *nnodes, int *ctype, int *conn)
 {
        int elType=1,zero=0;
@@ -347,7 +347,7 @@ public:
        }
 };
 
-CDECL void FEM_Update_mesh(FEM_Update_mesh_fn callFn,int userValue,int doWhat) 
+CLINKAGE void FEM_Update_mesh(FEM_Update_mesh_fn callFn,int userValue,int doWhat)
 {
   updateState update(doWhat);
   if (update.pre() && 0 != userValue)
@@ -355,7 +355,7 @@ CDECL void FEM_Update_mesh(FEM_Update_mesh_fn callFn,int userValue,int doWhat)
   update.post();
 }
 
-FDECL void FTN_NAME(FEM_UPDATE_MESH,fem_update_mesh)
+FLINKAGE void FTN_NAME(FEM_UPDATE_MESH,fem_update_mesh)
   (FEM_Update_mesh_fortran_fn callFn,int *userValue,int *doWhat) 
 { 
   updateState update(*doWhat);
@@ -370,21 +370,21 @@ mesh prep/post utilities.
 */
 static int *splitMesh=NULL;
 static int splitChunks=0;
-CDECL void FEM_Serial_split(int nchunks) {
+CLINKAGE void FEM_Serial_split(int nchunks) {
        splitChunks=nchunks;
        splitMesh=new int[splitChunks];
        FEM_Mesh_partition(FEM_Mesh_default_write(),splitChunks,splitMesh);
 }
 FORTRAN_AS_C(FEM_SERIAL_SPLIT,FEM_Serial_split,fem_serial_split, (int *n),(*n))
 
-CDECL void FEM_Serial_begin(int chunkNo) {
+CLINKAGE void FEM_Serial_begin(int chunkNo) {
        FEM_Mesh_write(splitMesh[chunkNo],"fem_mesh",chunkNo,splitChunks);
        FEM_Mesh_set_default_read(splitMesh[chunkNo]);
 }
 FORTRAN_AS_C(FEM_SERIAL_BEGIN,FEM_Serial_begin,fem_serial_begin, (int *c),(*c-1))
 
 
-CDECL void FEM_Serial_read(int chunkNo,int nChunks) {
+CLINKAGE void FEM_Serial_read(int chunkNo,int nChunks) {
        if (splitMesh==NULL) {
                splitChunks=nChunks;
                splitMesh=new int[splitChunks];
@@ -400,7 +400,7 @@ CDECL void FEM_Serial_read(int chunkNo,int nChunks) {
 }
 FORTRAN_AS_C(FEM_SERIAL_READ,FEM_Serial_read,fem_serial_read, (int *c,int *n),(*c-1,*n))
 
-CDECL void FEM_Serial_assemble(void) {
+CLINKAGE void FEM_Serial_assemble(void) {
        int serialMesh=FEM_Mesh_assemble(splitChunks,splitMesh);
        for (int i=0;i<splitChunks;i++)
                FEM_Mesh_deallocate(splitMesh[i]);
index 7a4cf2ec46e95f0342e68be225ae7f4421629f3e..3b21d2e23afd5702bec29506fad999371685dce5 100644 (file)
@@ -9,7 +9,7 @@ FEM Implementation file: mesh creation and user-data manipulation.
 #include <assert.h>
 #include "fem.h"
 #include "fem_impl.h"
-#include "charm-api.h" /*for CDECL, FTN_NAME*/
+#include "charm-api.h" /*for CLINKAGE, FTN_NAME*/
 #include "fem_mesh_modify.h"
 
 extern int femVersion;
@@ -58,13 +58,13 @@ static void checkIsSet(int fem_mesh,bool wantSet,const char *caller) {
 }
 
 /* Connectivity: Map calls to appropriate version of FEM_Mesh_data */
-CDECL void 
+CLINKAGE void
 FEM_Mesh_conn(int fem_mesh,int entity,
        int *conn, int firstItem, int length, int width) 
 {
        FEM_Mesh_data(fem_mesh,entity,FEM_CONN, conn, firstItem,length, FEM_INDEX_0, width);
 }
-FDECL void 
+FLINKAGE void
 FTN_NAME(FEM_MESH_CONN,fem_mesh_conn)(int *fem_mesh,int *entity,
        int *conn, int *firstItem,int *length, int *width)
 {
@@ -72,14 +72,14 @@ FTN_NAME(FEM_MESH_CONN,fem_mesh_conn)(int *fem_mesh,int *entity,
        FEM_Mesh_data(*fem_mesh,*entity,FEM_CONN, conn, *firstItem-1,*length, FEM_INDEX_1, *width);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_set_conn(int fem_mesh,int entity,
        const int *conn, int firstItem,int length, int width)
 {
        checkIsSet(fem_mesh,true,"FEM_Mesh_set_conn");
        FEM_Mesh_conn(fem_mesh,entity,(int *)conn,firstItem,length,width);
 }
-FDECL void
+FLINKAGE void
 FTN_NAME(FEM_MESH_SET_CONN,fem_mesh_set_conn)(int *fem_mesh,int *entity,
        const int *conn, int *firstItem,int *length, int *width)
 {
@@ -87,14 +87,14 @@ FTN_NAME(FEM_MESH_SET_CONN,fem_mesh_set_conn)(int *fem_mesh,int *entity,
        FTN_NAME(FEM_MESH_CONN,fem_mesh_conn)(fem_mesh,entity,(int *)conn,firstItem,length,width);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_get_conn(int fem_mesh,int entity,
        int *conn, int firstItem,int length, int width)
 {
        checkIsSet(fem_mesh,false,"FEM_Mesh_get_conn");
        FEM_Mesh_conn(fem_mesh,entity,conn,firstItem,length,width);
 }
-FDECL void
+FLINKAGE void
 FTN_NAME(FEM_MESH_GET_CONN,fem_mesh_get_conn)(int *fem_mesh,int *entity,
        int *conn, int *firstItem,int *length, int *width)
 {
@@ -104,7 +104,7 @@ FTN_NAME(FEM_MESH_GET_CONN,fem_mesh_get_conn)(int *fem_mesh,int *entity,
 
 
 /* Data: map to FEM_Mesh_offset */
-CDECL void
+CLINKAGE void
 FEM_Mesh_data(int fem_mesh,int entity,int attr,        
        void *data, int firstItem,int length, int datatype,int width)
 {
@@ -118,7 +118,7 @@ FORTRAN_AS_C(FEM_MESH_DATA,FEM_Mesh_data,fem_mesh_data,
 )
 
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_set_data(int fem_mesh,int entity,int attr,    
        const void *data, int firstItem,int length, int datatype,int width)
 {
@@ -130,7 +130,7 @@ FORTRAN_AS_C(FEM_MESH_SET_DATA,FEM_Mesh_set_data,fem_mesh_set_data,
        (*fem_mesh,*entity,*attr,data,*firstItem-1,*length,*datatype,*width)
 )
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_get_data(int fem_mesh,int entity,int attr,    
        void *data, int firstItem,int length, int datatype,int width)
 {
@@ -142,7 +142,7 @@ FORTRAN_AS_C(FEM_MESH_GET_DATA,FEM_Mesh_get_data,fem_mesh_get_data,
        (*fem_mesh,*entity,*attr,data,*firstItem-1,*length,*datatype,*width)
 )
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_data_layout(int fem_mesh,int entity,int attr,         
        void *data, int firstItem,int length, IDXL_Layout_t layout)
 {
@@ -156,7 +156,7 @@ FORTRAN_AS_C(FEM_MESH_DATA_LAYOUT,FEM_Mesh_data_layout,fem_mesh_data_layout,
        (*fem_mesh,*entity,*attr,data,*firstItem-1,*length,*layout)
 )
 
-CDECL void
+CLINKAGE void
 FEM_Mesh_data_offset(int fem_mesh,int entity,int attr,         
        void *data, int firstItem,int length,
        int type,int width, int offsetBytes,int distanceBytes,int skewBytes)
@@ -199,21 +199,21 @@ void FEM_Register_array_layout(int fem_mesh,int entity,int attr,
 }
 
 /*registration api */
-CDECL void 
+CLINKAGE void
 FEM_Register_array(int fem_mesh,int entity,int attr,
        void *data, int datatype,int width)
 {      
        FEM_Register_array(fem_mesh,entity,attr,data,datatype,width,0);
 }
 
-CDECL void
+CLINKAGE void
 FEM_Register_array_layout(int fem_mesh,int entity,int attr,    
        void *data, IDXL_Layout_t layout){
        FEM_Register_array_layout(fem_mesh,entity,attr,data,layout,0);
 }
 
 
-CDECL void 
+CLINKAGE void
 FEM_Register_entity(int fem_mesh,int entity,void *data,
                int len,int max,FEM_Mesh_alloc_fn fn) {
                FEM_Register_entity_impl(fem_mesh,entity,data,len,max,fn);
@@ -233,7 +233,7 @@ FORTRAN_AS_C(FEM_REGISTER_ENTITY,FEM_Register_entity,fem_register_entity,
 
 
 // User data API:
-CDECL void 
+CLINKAGE void
 FEM_Mesh_pup(int fem_mesh,int dataTag,FEM_Userdata_fn fn,void *data) {
        const char *caller="FEM_Mesh_pup"; FEMAPI(caller);
        FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
@@ -250,7 +250,7 @@ FORTRAN_AS_C(FEM_MESH_PUP,FEM_Mesh_pup,fem_mesh_pup,
        (int *m,int *t,FEM_Userdata_fn fn,void *data), (*m,*t,fn,data))
 
 // Accessor API:
-CDECL void 
+CLINKAGE void
 FEM_Mesh_set_length(int fem_mesh,int entity,int newLength) {
        const char *caller="FEM_Mesh_set_length"; FEMAPI(caller);
        checkIsSet(fem_mesh,true,caller);
@@ -262,7 +262,7 @@ FORTRAN_AS_C(FEM_MESH_SET_LENGTH,FEM_Mesh_set_length,fem_mesh_set_length,
 )
 
 
-CDECL int 
+CLINKAGE int
 FEM_Mesh_get_length(int fem_mesh,int entity) {
        const char *caller="FEM_Mesh_get_length"; FEMAPI(caller);
        int len=FEM_Entity_lookup(fem_mesh,entity,caller)->size();
@@ -274,7 +274,7 @@ FORTRAN_AS_C_RETURN(int,
 )
 
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_set_width(int fem_mesh,int entity,int attr,int newWidth) {
        const char *caller="FEM_Mesh_set_width";
        FEMAPI(caller);
@@ -286,7 +286,7 @@ FORTRAN_AS_C(FEM_MESH_SET_WIDTH,FEM_Mesh_set_width,fem_mesh_set_width,
        (*fem_mesh,*entity,*attr,*newWidth)
 )
 
-CDECL int 
+CLINKAGE int
 FEM_Mesh_get_width(int fem_mesh,int entity,int attr) {
        const char *caller="FEM_Mesh_get_width";
        FEMAPI(caller);
@@ -297,7 +297,7 @@ FORTRAN_AS_C_RETURN(int,
        (int *fem_mesh,int *entity,int *attr),(*fem_mesh,*entity,*attr)
 )
 
-CDECL int 
+CLINKAGE int
 FEM_Mesh_get_datatype(int fem_mesh,int entity,int attr) {
        const char *caller="FEM_Mesh_get_datatype";
        FEMAPI(caller);
@@ -308,7 +308,7 @@ FORTRAN_AS_C_RETURN(int,
        (int *fem_mesh,int *entity,int *attr),(*fem_mesh,*entity,*attr)
 )
 
-CDECL int 
+CLINKAGE int
 FEM_Mesh_is_set(int fem_mesh) /* return 1 if this is a writing mesh */
 {
        return (FEM_Mesh_lookup(fem_mesh,"FEM_Mesh_is_get")->isSetting())?1:0;
@@ -318,7 +318,7 @@ FORTRAN_AS_C_RETURN(int,
        (int *fem_mesh),(*fem_mesh)
 )
 
-CDECL int 
+CLINKAGE int
 FEM_Mesh_is_get(int fem_mesh) /* return 1 if this is a readable mesh */
 {
        return (!FEM_Mesh_lookup(fem_mesh,"FEM_Mesh_is_get")->isSetting())?1:0;
@@ -328,18 +328,18 @@ FORTRAN_AS_C_RETURN(int,
        (int *fem_mesh),(*fem_mesh)
 )
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_become_get(int fem_mesh) /* Make this a readable mesh */
 { FEM_Mesh_lookup(fem_mesh,"FEM_Mesh_become_get")->becomeGetting(); }
 FORTRAN_AS_C(FEM_MESH_BECOME_GET,FEM_Mesh_become_get,fem_mesh_become_get, (int *m),(*m))
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_become_set(int fem_mesh)
 { FEM_Mesh_lookup(fem_mesh,"FEM_Mesh_become_get")->becomeSetting(); }
 FORTRAN_AS_C(FEM_MESH_BECOME_SET,FEM_Mesh_become_set,fem_mesh_become_set, (int *m),(*m))
 
 
-CDECL IDXL_t 
+CLINKAGE IDXL_t
 FEM_Comm_shared(int fem_mesh,int entity) {
        const char *caller="FEM_Comm_shared";
        FEMAPI(caller); 
@@ -352,7 +352,7 @@ FORTRAN_AS_C_RETURN(int,
        (int *fem_mesh,int *entity),(*fem_mesh,*entity)
 )
 
-CDECL IDXL_t 
+CLINKAGE IDXL_t
 FEM_Comm_ghost(int fem_mesh,int entity) {
        const char *caller="FEM_Comm_ghost";
        FEMAPI(caller);
@@ -419,7 +419,7 @@ FEM_Attribute *FEM_Attribute_lookup(int fem_mesh,int entity,int attr,const char
        return FEM_Entity_lookup(fem_mesh,entity,caller)->lookup(attr,caller);
 }
 
-CDECL int FEM_Mesh_get_entities(int fem_mesh, int *entities) {
+CLINKAGE int FEM_Mesh_get_entities(int fem_mesh, int *entities) {
        const char *caller="FEM_Mesh_get_entities";
        FEMAPI(caller); 
        return FEM_Mesh_lookup(fem_mesh,caller)->getEntities(entities);
@@ -429,7 +429,7 @@ FORTRAN_AS_C_RETURN(int,
        (int *mesh,int *ent), (*mesh,ent)
 )
 
-CDECL int FEM_Mesh_get_attributes(int fem_mesh,int entity,int *attributes) {
+CLINKAGE int FEM_Mesh_get_attributes(int fem_mesh,int entity,int *attributes) {
        const char *caller="FEM_Mesh_get_attributes";
        FEMAPI(caller);
        return FEM_Entity_lookup(fem_mesh,entity,caller)->getAttrs(attributes);
@@ -441,7 +441,7 @@ FORTRAN_AS_C_RETURN(int,
 
 /************** FEM_Attribute ****************/
 
-CDECL const char *FEM_Get_datatype_name(int datatype,char *storage) {
+CLINKAGE const char *FEM_Get_datatype_name(int datatype,char *storage) {
        switch(datatype) {
        case FEM_BYTE: return "FEM_BYTE";
        case FEM_INT: return "FEM_INT";
@@ -456,7 +456,7 @@ CDECL const char *FEM_Get_datatype_name(int datatype,char *storage) {
 
 /// Return the human-readable version of this FEM_ATTR code.
 ///  For example, FEM_attr2name(FEM_CONN)=="FEM_CONN".
-CDECL const char *FEM_Get_attr_name(int attr,char *storage) 
+CLINKAGE const char *FEM_Get_attr_name(int attr,char *storage)
 {
        if (attr<FEM_ATTRIB_TAG_MAX) 
        { //It's a user tag:
@@ -1036,7 +1036,7 @@ int FEM_VarIndexAttribute::findInRow(int row,const ID &data){
 /********************** Entity **************************/
 
 /// Return the human-readable version of this entity code.
-CDECL const char *FEM_Get_entity_name(int entity,char *storage) 
+CLINKAGE const char *FEM_Get_entity_name(int entity,char *storage)
 {
        char *dest=storage;
        if (entity<FEM_ENTITY_FIRST || entity>=FEM_ENTITY_LAST) {
@@ -1981,7 +1981,7 @@ void FEM_writeMesh(FEM_Mesh *m,const char *prefix,int chunkNo,int nChunks)
 
 
 // Setup the entity FEM_IS_VALID tables
-CDECL void FEM_Mesh_allocate_valid_attr(int fem_mesh, int entity_type){  
+CLINKAGE void FEM_Mesh_allocate_valid_attr(int fem_mesh, int entity_type){
   FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,"FEM_Mesh_create_valid_elem");
   FEM_Entity *entity = m->lookup(entity_type,"FEM_Mesh_allocate_valid_attr");
   entity->allocateValid();
@@ -1993,7 +1993,7 @@ FORTRAN_AS_C(FEM_MESH_ALLOCATE_VALID_ATTR,
 
 
 // mark an entity as valid
-CDECL void FEM_set_entity_valid(int mesh, int entityType, int entityIdx){
+CLINKAGE void FEM_set_entity_valid(int mesh, int entityType, int entityIdx){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_");
   FEM_Entity *entity = m->lookup(entityType,"FEM_");
   entity->set_valid(entityIdx,true);
@@ -2005,7 +2005,7 @@ FORTRAN_AS_C(FEM_SET_ENTITY_VALID,
 
 
 // mark an entity as invalid
-CDECL void FEM_set_entity_invalid(int mesh, int entityType, int entityIdx){
+CLINKAGE void FEM_set_entity_invalid(int mesh, int entityType, int entityIdx){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Mesh_create_valid_elem");
   FEM_Entity *entity = m->lookup(entityType,"FEM_Mesh_allocate_valid_attr");
   return entity->set_invalid(entityIdx,true);
@@ -2017,7 +2017,7 @@ FORTRAN_AS_C(FEM_SET_ENTITY_INVALID,
 
 
 // Determine if an entity is valid
-CDECL int FEM_is_valid(int mesh, int entityType, int entityIdx){
+CLINKAGE int FEM_is_valid(int mesh, int entityType, int entityIdx){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Mesh_create_valid_elem");
   FEM_Entity *entity = m->lookup(entityType,"FEM_Mesh_allocate_valid_attr");
   return (entity->is_valid(entityIdx) != 0);
@@ -2029,7 +2029,7 @@ FORTRAN_AS_C(FEM_IS_VALID,
 
 
 // Count number of valid items for this entity type
-CDECL unsigned int FEM_count_valid(int mesh, int entityType){
+CLINKAGE unsigned int FEM_count_valid(int mesh, int entityType){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Mesh_create_valid_elem");
   FEM_Entity *entity = m->lookup(entityType,"FEM_Mesh_allocate_valid_attr");
   return entity->count_valid();
index aaf9f24fb9040776c044e800c8c855fbe6e67b96..c8439d25f78b9b3435d69072c5f9c9ba15d487cc 100644 (file)
@@ -294,12 +294,12 @@ class FEM_Mesh;
 /// Return the human-readable version of this entity code, like "FEM_NODE".
 ///  storage, which must be at least 80 bytes long, is used for
 ///  non-static names, like the user tag "FEM_ELEM+2".
-CDECL const char *FEM_Get_entity_name(int entity,char *storage);
+CLINKAGE const char *FEM_Get_entity_name(int entity,char *storage);
 
 /// Return the human-readable version of this attribute code, like "FEM_CONN".
 ///  storage, which must be at least 80 bytes long, is used for
 ///  non-static names, like the user tag "FEM_DATA+7".
-CDECL const char *FEM_Get_attr_name(int attr,char *storage);
+CLINKAGE const char *FEM_Get_attr_name(int attr,char *storage);
 
 
 
index 62c4f6badc1813b2b07d1660af2c8b7e39fc7a99..d8a48ced0b20e4d3200ed3788736933fc18287f5 100644 (file)
@@ -11,7 +11,7 @@
 
 #include "fem.h"
 #include "fem_impl.h"
-#include "charm-api.h" /*for CDECL, FTN_NAME*/
+#include "charm-api.h" /*for CLINKAGE, FTN_NAME*/
 
 
 
@@ -28,7 +28,7 @@ FORTRAN_AS_C(CMIMEMORYCHECK,
 
 
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_create_node_elem_adjacency(int fem_mesh){
        const char *caller="FEM_Mesh_create_node_elem_adjacency"; FEMAPI(caller);
        FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
@@ -40,7 +40,7 @@ FORTRAN_AS_C(FEM_MESH_CREATE_NODE_ELEM_ADJACENCY,
              (int *fem_mesh),  (*fem_mesh) )
 
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_create_node_node_adjacency(int fem_mesh){
        const char *caller="FEM_Mesh_create_node_node_adjacency"; FEMAPI(caller);
        FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
@@ -52,7 +52,7 @@ FORTRAN_AS_C(FEM_MESH_CREATE_NODE_NODE_ADJACENCY,
              (int *fem_mesh),  (*fem_mesh) )
 
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_create_elem_elem_adjacency(int fem_mesh){
        const char *caller="FEM_Mesh_create_elem_elem_adjacency"; FEMAPI(caller);
        FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
@@ -65,13 +65,13 @@ FORTRAN_AS_C(FEM_MESH_CREATE_ELEM_ELEM_ADJACENCY,
 
 
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_create_elem_node_adjacency(int fem_mesh){
   CkPrintf("WARNING: Do Not Call FEM_Mesh_create_elem_node_adjacency(), as the connectivity table should already exist\n");
 }
 
 
-CDECL void 
+CLINKAGE void
 FEM_Mesh_get2ElementsOnEdge(int fem_mesh, int n1, int n2, int *e1, int *e2){
        const char *caller="FEM_Mesh_get2ElementsOnEdge"; FEMAPI(caller);
        FEM_Mesh *m=FEM_Mesh_lookup(fem_mesh,caller);
index ecb161784aea57af6163401952fb6e436014c7e1..2ff2f5844324989af92ace5a18508617ba74e110 100644 (file)
 
 CProxy_femMeshModify meshMod;
 
-CDECL int FEM_add_node(int mesh, int* adjacent_nodes, int num_adjacent_nodes, int *chunks, int numChunks, int forceShared, int upcall){
+CLINKAGE int FEM_add_node(int mesh, int* adjacent_nodes, int num_adjacent_nodes, int *chunks, int numChunks, int forceShared, int upcall){
   return FEM_add_node(FEM_Mesh_lookup(mesh,"FEM_add_node"), adjacent_nodes, num_adjacent_nodes, chunks, numChunks, forceShared, upcall);
 }
-CDECL void FEM_remove_node(int mesh,int node){
+CLINKAGE void FEM_remove_node(int mesh,int node){
   return FEM_remove_node(FEM_Mesh_lookup(mesh,"FEM_remove_node"), node);
 }
-CDECL int FEM_remove_element(int mesh, int element, int elem_type, int permanent){
+CLINKAGE int FEM_remove_element(int mesh, int element, int elem_type, int permanent){
   return FEM_remove_element(FEM_Mesh_lookup(mesh,"FEM_remove_element"), element, elem_type, permanent);
 }
-CDECL int FEM_purge_element(int mesh, int element, int elem_type) {
+CLINKAGE int FEM_purge_element(int mesh, int element, int elem_type) {
   return FEM_purge_element(FEM_Mesh_lookup(mesh,"FEM_remove_element"), element, elem_type);
 }
-CDECL int FEM_add_element(int mesh, int* conn, int conn_size, int elem_type, int chunkNo){
+CLINKAGE int FEM_add_element(int mesh, int* conn, int conn_size, int elem_type, int chunkNo){
   return FEM_add_element(FEM_Mesh_lookup(mesh,"FEM_add_element"), conn, conn_size, elem_type, chunkNo);
 }
-CDECL int FEM_Modify_Lock(int mesh, int* affectedNodes, int numAffectedNodes, int* affectedElts, int numAffectedElts, int elemtype){
+CLINKAGE int FEM_Modify_Lock(int mesh, int* affectedNodes, int numAffectedNodes, int* affectedElts, int numAffectedElts, int elemtype){
   return FEM_Modify_Lock(FEM_Mesh_lookup(mesh,"FEM_Modify_Lock"), affectedNodes, numAffectedNodes, affectedElts, numAffectedElts, elemtype);
 }
-CDECL int FEM_Modify_Unlock(int mesh){
+CLINKAGE int FEM_Modify_Unlock(int mesh){
   return FEM_Modify_Unlock(FEM_Mesh_lookup(mesh,"FEM_Modify_Unlock"));
 }
-CDECL int FEM_Modify_LockN(int mesh, int nodeId, int readLock) {
+CLINKAGE int FEM_Modify_LockN(int mesh, int nodeId, int readLock) {
   return FEM_Modify_LockN(FEM_Mesh_lookup(mesh,"FEM_Modify_LockN"),nodeId, readLock);
 }
-CDECL int FEM_Modify_UnlockN(int mesh, int nodeId, int readLock) {
+CLINKAGE int FEM_Modify_UnlockN(int mesh, int nodeId, int readLock) {
   return FEM_Modify_UnlockN(FEM_Mesh_lookup(mesh,"FEM_Modify_UnlockN"),nodeId, readLock);
 }
 
@@ -73,7 +73,7 @@ inline int is_shared(FEM_Mesh *m, int node){
 }
 
 
-CDECL void FEM_Print_Mesh_Summary(int mesh){
+CLINKAGE void FEM_Print_Mesh_Summary(int mesh){
   CkPrintf("---------------FEM_Print_Mesh_Summary-------------\n");
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Print_Mesh_Summary");
 
@@ -96,24 +96,24 @@ CDECL void FEM_Print_Mesh_Summary(int mesh){
 }
 
 
-CDECL void FEM_Print_n2n(int mesh, int nodeid){
+CLINKAGE void FEM_Print_n2n(int mesh, int nodeid){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Print_Mesh_Summary");
   m->getfmMM()->getfmUtil()->FEM_Print_n2n(m, nodeid);
 }
 
-CDECL void FEM_Print_n2e(int mesh, int eid){
+CLINKAGE void FEM_Print_n2e(int mesh, int eid){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Print_Mesh_Summary");
   m->getfmMM()->getfmUtil()->FEM_Print_n2e(m, eid);
 }
 
 
 // WARNING THESE TWO FUNCTIONS ONLY WORK ON TRIANGULAR ELEMENTS...
-CDECL void FEM_Print_e2n(int mesh, int eid){
+CLINKAGE void FEM_Print_e2n(int mesh, int eid){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Print_Mesh_Summary");
   m->getfmMM()->getfmUtil()->FEM_Print_e2n(m, eid);
 }
 
-CDECL void FEM_Print_e2e(int mesh, int eid){
+CLINKAGE void FEM_Print_e2e(int mesh, int eid){
   FEM_Mesh *m=FEM_Mesh_lookup(mesh,"FEM_Print_Mesh_Summary");
   m->getfmMM()->getfmUtil()->FEM_Print_e2e(m, eid);
 }
@@ -1753,7 +1753,7 @@ void FEM_Modify_correctLockN(FEM_Mesh *m, int nodeId) {
   return;
 }
 
-CDECL void FEM_REF_INIT(int mesh, int dim) {
+CLINKAGE void FEM_REF_INIT(int mesh, int dim) {
   CkArrayID femRefId;
   int cid;
   int size;
index 20c9d4ca0e23c3cba868f8c59887382e38d8038b..515b91df743d6cb3f6fa1ae69d9516590f48d3c1 100644 (file)
@@ -20,10 +20,10 @@ Orion Sky Lawlor, olawlor@acm.org, 2003/7/13
 #include "converse.h" /* for CmiGetArg */
 #include "charm-api.h" /* for Fortran name mangling FTN_NAME */
 
-CDECL void fem_impl_call_init(void);
+CLINKAGE void fem_impl_call_init(void);
 
-FDECL void FTN_NAME(INIT,init)(void);
-FDECL void FTN_NAME(DRIVER,driver)(void);
+FLINKAGE void FTN_NAME(INIT,init)(void);
+FLINKAGE void FTN_NAME(DRIVER,driver)(void);
 
 int main(int argc,char **argv) {
        MPI_Comm comm=MPI_COMM_WORLD;
index c84b7b32da51b4f28b5826cfed55df1dd4d4883a..592e597b2c4a2c36f13bce73a8405155bc305558 100644 (file)
@@ -390,7 +390,7 @@ void FEM_Sym_Linear::pup(PUP::er &p) {
 }
 
 /********** High-Level (Faces & coordinates) API **********/
-CDECL void FEM_Add_linear_periodicity(
+CLINKAGE void FEM_Add_linear_periodicity(
        int nFaces,int nPer,
        const int *facesA,const int *facesB,
        int nNodes,const double *nodeLocs
@@ -400,7 +400,7 @@ CDECL void FEM_Add_linear_periodicity(
        FEM_curPartition().addLinearPeriodic(nFaces,nPer,
                facesA,facesB,0,nNodes,(const CkVector3d *)nodeLocs);
 }
-FDECL void FTN_NAME(FEM_ADD_LINEAR_PERIODICITY,fem_add_linear_periodicity)(
+FLINKAGE void FTN_NAME(FEM_ADD_LINEAR_PERIODICITY,fem_add_linear_periodicity)(
        int *nFaces,int *nPer,
        const int *facesA,const int *facesB,
        int *nNodes,const double *nodeLocs
@@ -411,7 +411,7 @@ FDECL void FTN_NAME(FEM_ADD_LINEAR_PERIODICITY,fem_add_linear_periodicity)(
                facesA,facesB,1,*nNodes,(const CkVector3d *)nodeLocs);
 }
 
-CDECL void FEM_Sym_coordinates(int elType,double *d_locs)
+CLINKAGE void FEM_Sym_coordinates(int elType,double *d_locs)
 {
        const char *caller="FEM_Sym_coordinates"; FEMAPI(caller);
        
@@ -427,7 +427,7 @@ CDECL void FEM_Sym_coordinates(int elType,double *d_locs)
                if (sym[i]!=(FEM_Symmetries_t)0)
                        sl.applyLoc(&locs[i],sym[i]);
 }
-FDECL void FTN_NAME(FEM_SYM_COORDINATES,fem_sym_coordinates)
+FLINKAGE void FTN_NAME(FEM_SYM_COORDINATES,fem_sym_coordinates)
        (int *elType,double *locs)
 {
        FEM_Sym_coordinates(zeroToMinusOne(*elType),locs);
@@ -436,13 +436,13 @@ FDECL void FTN_NAME(FEM_SYM_COORDINATES,fem_sym_coordinates)
 
 /********** Low-Level (canonicalization array) API **********/
 
-CDECL void FEM_Set_sym_nodes(const int *canon,const int *sym)
+CLINKAGE void FEM_Set_sym_nodes(const int *canon,const int *sym)
 {
        const char *caller="FEM_Set_sym_nodes"; FEMAPI(caller);
        int n=FEMchunk::get(caller)->setMesh(caller)->node.size();
        FEM_curPartition().setSymmetries(n,CkCopyArray(canon,n,0),sym);
 }
-FDECL void FTN_NAME(FEM_SET_SYM_NODES,fem_set_sym_nodes)
+FLINKAGE void FTN_NAME(FEM_SET_SYM_NODES,fem_set_sym_nodes)
        (const int *canon,const int *sym)
 {
        const char *caller="FEM_Set_sym_nodes"; FEMAPI(caller);
index cac63755e7ca86a12de04b7b474739f25f6c1a99..1ca0e56b2da5bfbf758eec2dac2dbab808cd5bd5 100644 (file)
@@ -21,7 +21,7 @@ void IDXL_Abort(const char *callingRoutine,const char *msg,int m0,int m1,int m2)
        CkAbort(msg2);
 }
 
-CDECL void pupIDXL_Chunk(pup_er cp) {
+CLINKAGE void pupIDXL_Chunk(pup_er cp) {
        PUP::er &p=*(PUP::er *)cp;
        IDXL_Chunk *c=(IDXL_Chunk *)TCHARM_Get_global(IDXL_globalID);
        if (c==NULL) {
@@ -42,7 +42,7 @@ IDXL_Chunk *IDXL_Chunk::get(const char *callingRoutine) {
        return c;
 }
 
-CDECL void
+CLINKAGE void
 IDXL_Init(int mpi_comm) {
        if (!TCHARM_Get_global(IDXL_globalID)) {
                IDXL_Chunk *c=new IDXL_Chunk(mpi_comm);
index 96312da5fbf1da1e70fd47b0eb8f15ad077e2dc5..6ec9ca35406e0cd2456b27df262ec4baa8715212 100644 (file)
@@ -9,7 +9,7 @@
 /************************* IDXL itself ************************/
 
 /** Create a new, empty index list. Must eventually call IDXL_Destroy on this list. */
-CDECL IDXL_t 
+CLINKAGE IDXL_t
 IDXL_Create(void) {
        const char *caller="IDXL_Create";
        IDXLAPI(caller); IDXL_Chunk *c=IDXL_Chunk::get(caller);
@@ -38,7 +38,7 @@ FORTRAN_AS_C(IDXL_PRINT,IDXL_Print,idxl_print,
        (int *l), (*l) )
 
 /** Copy the indices in src into l. */
-CDECL void 
+CLINKAGE void
 IDXL_Copy(IDXL_t l,IDXL_t src) {
        IDXL_Combine(l,src,0,0);
 }
@@ -57,7 +57,7 @@ static void shiftSide(IDXL_Side &dest,int idxShift)
        dest.flushMap();
 }
 /** Shift the indices of this list by this amount. */
-CDECL void 
+CLINKAGE void
 IDXL_Shift(IDXL_t l_t,int startSend,int startRecv) {
        const char *caller="IDXL_Shift";
        IDXLAPI(caller); IDXL_Chunk *c=IDXL_Chunk::get(caller);
@@ -97,7 +97,7 @@ static void combineSide(IDXL_Side &dest,const IDXL_Side &src,
  * @param startSend value to add to send indices of src.
  * @param startRecv value to add to recv indices of src.
   */
-CDECL void 
+CLINKAGE void
 IDXL_Combine(IDXL_t dest_t,IDXL_t src_t,int startSend,int startRecv)
 {
        const char *caller="IDXL_Combine";
@@ -125,7 +125,7 @@ FORTRAN_AS_C(IDXL_COMBINE,IDXL_Combine,idxl_combine,
 
 /** Sort the indices in this list by these 2D coordinates */
 // FIXME: void IDXL_Sort_2d(IDXL_t l,double *coord2d);
-CDECL void IDXL_Sort_2d(IDXL_t l_t,double *coord2d){
+CLINKAGE void IDXL_Sort_2d(IDXL_t l_t,double *coord2d){
        const char *caller = "IDXL_Sort_2d";
        IDXLAPI(caller); IDXL_Chunk *c=IDXL_Chunk::get(caller);
        IDXL &l=c->lookup(l_t,caller);
@@ -135,7 +135,7 @@ CDECL void IDXL_Sort_2d(IDXL_t l_t,double *coord2d){
 
 /** Sort the indices in this list by these 3D coordinates */
 // FIXME: void IDXL_Sort_3d(IDXL_t l,double *coord3d);
-CDECL void IDXL_Sort_3d(IDXL_t l_t,double *coord3d){
+CLINKAGE void IDXL_Sort_3d(IDXL_t l_t,double *coord3d){
        const char *caller = "IDXL_Sort_3d";
        IDXLAPI(caller); IDXL_Chunk *c=IDXL_Chunk::get(caller);
        IDXL &l=c->lookup(l_t,caller);
@@ -184,14 +184,14 @@ static void splitEntity(IDXL &l,
                splitEntity(l.getRecv(),localIdx,nBetween,between,idxbase);
 }
 
-CDECL void IDXL_Add_entity(IDXL_t l_t,int localIdx,int nBetween,int *between)
+CLINKAGE void IDXL_Add_entity(IDXL_t l_t,int localIdx,int nBetween,int *between)
 {
        const char *caller="IDXL_Add_entity";
        IDXLAPI(caller); IDXL_Chunk *c=IDXL_Chunk::get(caller);
        IDXL &l=c->lookup(l_t,caller);
        splitEntity(l,localIdx,nBetween,between,0);
 }
-FDECL void FTN_NAME(IDXL_ADD_ENTITY,idxl_add_entity)
+FLINKAGE void FTN_NAME(IDXL_ADD_ENTITY,idxl_add_entity)
        (int *l_t,int *localIdx,int *nBetween,int *between)
 {
        const char *caller="IDXL_Add_entity";
@@ -202,7 +202,7 @@ FDECL void FTN_NAME(IDXL_ADD_ENTITY,idxl_add_entity)
 
 
 /** Throw away this index list */
-CDECL void IDXL_Destroy(IDXL_t l) {
+CLINKAGE void IDXL_Destroy(IDXL_t l) {
        const char *caller="IDXL_Destroy";
        IDXLAPI(caller); IDXL_Chunk *c=IDXL_Chunk::get(caller);
        c->destroy(l);
@@ -229,36 +229,36 @@ const IDXL_Side &lookupSide(IDXL_Side_t s,const char *caller) {
        return *new IDXL_Side(); /* LIE: for whining compilers only */
 }
 
-CDECL IDXL_Side_t IDXL_Get_send(IDXL_t l) {
+CLINKAGE IDXL_Side_t IDXL_Get_send(IDXL_t l) {
        return l+IDXL_SHIFT_SIDE_T_SEND;
 }
 FORTRAN_AS_C_RETURN(int,IDXL_GET_SEND,IDXL_Get_send,idxl_get_send, (int *l),(*l))
 
-CDECL IDXL_Side_t IDXL_Get_recv(IDXL_t l) {
+CLINKAGE IDXL_Side_t IDXL_Get_recv(IDXL_t l) {
        return l+IDXL_SHIFT_SIDE_T_RECV;
 }
 FORTRAN_AS_C_RETURN(int,IDXL_GET_RECV,IDXL_Get_recv,idxl_get_recv, (int *l),(*l))
 
-CDECL void IDXL_Get_end(IDXL_Side_t s) {
+CLINKAGE void IDXL_Get_end(IDXL_Side_t s) {
        /* Nothing to do: l will be deleted when its IDXL_t is... */
 }
 FORTRAN_AS_C(IDXL_GET_END,IDXL_Get_end,idxl_get_end, (int *s),(*s))
 
-CDECL int IDXL_Get_partners(IDXL_Side_t s) {
+CLINKAGE int IDXL_Get_partners(IDXL_Side_t s) {
        const char *caller="IDXL_Get_partners"; IDXLAPI(caller); 
        return lookupSide(s,caller).size();
 }
 FORTRAN_AS_C_RETURN(int,IDXL_GET_PARTNERS,IDXL_Get_partners,idxl_get_partners,
        (int *s),(*s))
 
-CDECL int IDXL_Get_partner(IDXL_Side_t s,int partnerNo) {
+CLINKAGE int IDXL_Get_partner(IDXL_Side_t s,int partnerNo) {
        const char *caller="IDXL_Get_partner"; IDXLAPI(caller); 
        return lookupSide(s,caller).getLocalList(partnerNo).getDest();
 }
 FORTRAN_AS_C_RETURN(int,IDXL_GET_PARTNER,IDXL_Get_partner,idxl_get_partner,
        (int *s,int *p),(*s,*p-1))
 
-CDECL int IDXL_Get_count(IDXL_Side_t s,int partnerNo) {
+CLINKAGE int IDXL_Get_count(IDXL_Side_t s,int partnerNo) {
        const char *caller="IDXL_Get_count"; IDXLAPI(caller); 
        return lookupSide(s,caller).getLocalList(partnerNo).size();
 }
@@ -271,24 +271,24 @@ static void getList(IDXL_Side_t s,int partnerNo,int *list,int idxBase) {
        for (int i=0;i<l.size();i++) list[i]=l[i]+idxBase;
 }
 
-CDECL void IDXL_Get_list(IDXL_Side_t s,int partnerNo,int *list) {
+CLINKAGE void IDXL_Get_list(IDXL_Side_t s,int partnerNo,int *list) {
        getList(s,partnerNo,list,0);
 }
-FDECL void FTN_NAME(IDXL_GET_LIST,idxl_get_list)
+FLINKAGE void FTN_NAME(IDXL_GET_LIST,idxl_get_list)
        (int *s,int *p,int *list) {
        getList(*s,*p-1,list,1);
 }
 
-CDECL int IDXL_Get_index(IDXL_Side_t s,int partnerNo,int listIndex) {
+CLINKAGE int IDXL_Get_index(IDXL_Side_t s,int partnerNo,int listIndex) {
        const char *caller="IDXL_Get_index"; IDXLAPI(caller); 
        return lookupSide(s,caller).getLocalList(partnerNo)[listIndex];
 }
-FDECL int FTN_NAME(IDXL_GET_INDEX,idxl_get_index)(int *s,int *p,int *idx)
+FLINKAGE int FTN_NAME(IDXL_GET_INDEX,idxl_get_index)(int *s,int *p,int *idx)
 {
        return IDXL_Get_index(*s,*p-1,*idx-1)+1;
 }
 
-CDECL int IDXL_Get_source(IDXL_t l_t,int localNo) {
+CLINKAGE int IDXL_Get_source(IDXL_t l_t,int localNo) {
        const char *caller="IDXL_Get_source"; IDXLAPI(caller); 
        IDXL &l=IDXL_Chunk::get(caller)->lookup(l_t,caller);
        const IDXL_Rec *rec=l.getRecv().getRec(localNo);
@@ -296,12 +296,12 @@ CDECL int IDXL_Get_source(IDXL_t l_t,int localNo) {
        if (rec->getShared()>1) CkAbort("IDXL_Get_source called on multiply-shared entity!");
        return rec->getChk(0);
 }
-FDECL int FTN_NAME(IDXL_GET_SOURCE,idxl_get_source)(int *l,int *localNo) {
+FLINKAGE int FTN_NAME(IDXL_GET_SOURCE,idxl_get_source)(int *l,int *localNo) {
        return 1+IDXL_Get_source(*l,*localNo-1);
 }
 
 /************************* IDXL_Layout ************************/
-CDECL IDXL_Layout_t 
+CLINKAGE IDXL_Layout_t
 IDXL_Layout_create(int type, int width)
 {
        const char *caller="IDXL_Create_simple_data";
@@ -312,7 +312,7 @@ FORTRAN_AS_C_RETURN(int,
        IDXL_LAYOUT_CREATE,IDXL_Layout_create,idxl_layout_create,
        (int *t,int *w), (*t,*w))
 
-CDECL IDXL_Layout_t 
+CLINKAGE IDXL_Layout_t
 IDXL_Layout_offset(int type, int width, int offsetBytes, int distanceBytes,int skewBytes)
 {
        const char *caller="IDXL_Create_data";
@@ -324,7 +324,7 @@ FORTRAN_AS_C_RETURN(int,
        (int *t,int *w,int *o,int *d,int *s), (*t,*w,*o,*d,*s))
 
 #define GET_DATA_DECL(CAPS,Cname,lowercase, field) \
-CDECL int Cname(IDXL_Layout_t d) \
+CLINKAGE int Cname(IDXL_Layout_t d) \
 { \
        IDXLAPI(#Cname); \
        return IDXL_Layout_List::get().get(d,#Cname).field;\
@@ -336,7 +336,7 @@ GET_DATA_DECL(TYPE,IDXL_Get_layout_type,type, type)
 GET_DATA_DECL(WIDTH,IDXL_Get_layout_width,width, width)
 GET_DATA_DECL(DISTANCE,IDXL_Get_layout_distance,distance, distance)
 
-CDECL void 
+CLINKAGE void
 IDXL_Layout_destroy(IDXL_Layout_t l) {
        const char *caller="IDXL_Layout_destroy";
        IDXLAPI(caller);
@@ -347,7 +347,7 @@ FORTRAN_AS_C(IDXL_LAYOUT_DESTROY,IDXL_Layout_destroy,idxl_layout_destroy,
 
 /************************* IDXL_Comm ************************/
 /** Comm_begin begins a message exchange.  */
-CDECL IDXL_Comm_t 
+CLINKAGE IDXL_Comm_t
 IDXL_Comm_begin(int tag, int context) {
        const char *caller="IDXL_Create_data";
        IDXLAPI(caller); IDXL_Chunk *c=IDXL_Chunk::get(caller);
@@ -365,7 +365,7 @@ FORTRAN_AS_C_RETURN(int,
        const IDXL_Layout *dt=&c->layouts.get(type,caller);
 
 /** Remote-copy this data on flush/wait. */
-CDECL void 
+CLINKAGE void
 IDXL_Comm_sendrecv(IDXL_Comm_t m,IDXL_t dest, IDXL_Layout_t type, void *data) {
        COMM_BROILERPLATE("IDXL_Comm_sendrecv");
        IDXL_Comm *comm=NULL;
index c84e22a6ee5301a77ac5cb845f7242708d0d173f..d57bc44f2a0ac5b49470fa591988b7caf0e9efa9 100644 (file)
@@ -75,7 +75,7 @@ void cgSolver::iterate(void)
        fma(n,s_k, r_k,beta,s_k);
 }
 
-CDECL void ILSI_CG_Solver(ILSI_Param *param, ILSI_Comm *comm,
+CLINKAGE void ILSI_CG_Solver(ILSI_Param *param, ILSI_Comm *comm,
        int n, const real *b, real *x)
 {
        int maxIterations=1000000000;
index 5a781a3475412500592526595c88727149e0591d..4b7e65776a6aadf940acccaae6b8b148a1875a17 100644 (file)
@@ -93,7 +93,7 @@ public:
        }
 };
 
-CDECL void 
+CLINKAGE void
 IFEM_Solve_shared(ILSI_Solver s,ILSI_Param *p,
        int fem_mesh, int fem_entity,int length,int width,
        IFEM_Matrix_product_c A, void *ptr, 
@@ -106,7 +106,7 @@ IFEM_Solve_shared(ILSI_Solver s,ILSI_Param *p,
        (s)(p,&comm,n,b,x);
 }
 
-FDECL void 
+FLINKAGE void
 FTN_NAME(IFEM_SOLVE_SHARED,ifem_solve_shared)
        (ILSI_Solver s,ILSI_Param *p,
        int *fem_mesh, int *fem_entity,int *length,int *width,
@@ -233,7 +233,7 @@ void BCapplier::solve(ILSI_Solver s,ILSI_Param *p,
        for (i=0;i<bcCount;i++) x[at(i)]=bcValue[i];
 }
 
-CDECL void 
+CLINKAGE void
 IFEM_Solve_shared_bc(ILSI_Solver s,ILSI_Param *p,
        int fem_mesh, int fem_entity,int length,int width,
        int bcCount, const int *bcDOF, const double *bcValue,
@@ -245,7 +245,7 @@ IFEM_Solve_shared_bc(ILSI_Solver s,ILSI_Param *p,
        bc.solve(s,p,fem_mesh,fem_entity,length,width,b,x);
 }
 
-FDECL void 
+FLINKAGE void
 FTN_NAME(IFEM_SOLVE_SHARED_BC,ifem_solve_shared_bc)
        (ILSI_Solver s,ILSI_Param *p,
        int *fem_mesh, int *fem_entity,int *length,int *width,
index bd5acef944491c48c79dd5f936cd3ce1b4b361e5..e9caf3206927dd63f2a0b5dc0acd004d1227a762 100644 (file)
@@ -8,7 +8,7 @@ Orion Sky Lawlor, olawlor@acm.org, 1/16/2003
 ILSI_Comm::~ILSI_Comm() {}
 
 
-CDECL void ILSI_Param_new(ILSI_Param *param)
+CLINKAGE void ILSI_Param_new(ILSI_Param *param)
 {
        param->maxResidual=1.0e-6;
        param->maxIterations=0;
index 9c20e2a843d4c9c0d8b0fde7d262f179d4831f90..da1d9c52e29f3f19e761cde3129c5258e9d7e943 100644 (file)
@@ -53,7 +53,7 @@ public:
  *  symbol name a link alias of the C version.
  */
 #define FORTRAN_NAME_SOLVER(CAPITALNAME,Cname,lowercasename) \
-CDECL void FTN_NAME(CAPITALNAME,lowercasename) \
+CLINKAGE void FTN_NAME(CAPITALNAME,lowercasename) \
        (ILSI_Param *param, ILSI_Comm *comm,int n, const double *b, double *x) \
 { Cname(param,comm,n,b,x); }
 
index 4a0eb967cf22807afaf4c5ec1893db42860fb35c..43f6dbc12d1b07ff9f49cbb050e58db131412643 100644 (file)
@@ -1,2 +1,2 @@
 #include "charm-api.h"
-CDECL void driver(void) { }
+CLINKAGE void driver(void) { }
index 645f92dd8e5aa48b3b2f23bd44e058fd072a3018..dc6c732c4e6f2775df599125ceac8ff6621f230f 100644 (file)
@@ -1,5 +1,5 @@
 #include "charm-api.h"
 
 #if ! CMK_FORTRAN_USES_NOSCORE
-FDECL void FTN_NAME(DRIVER,driver)(void) { }
+FLINKAGE void FTN_NAME(DRIVER,driver)(void) { }
 #endif
index 6fd4d5e1ba228f6300d8427ba0f3468ed911821d..d5f295f21d1db90cd6d0344839b02dd9666ff1c1 100644 (file)
@@ -32,8 +32,8 @@ then resume the thread when the results arrive.
 // valid in routines called from driver().
 CtvStaticDeclare(MBlockChunk *, _mblkptr);
 
-CDECL void driver(void);
-FDECL void FTN_NAME(DRIVER,driver)(void);
+CLINKAGE void driver(void);
+FLINKAGE void FTN_NAME(DRIVER,driver)(void);
 
 static void callDrivers(void) {
        driver();
@@ -60,7 +60,7 @@ void MBlockProcInit(void)
   TCHARM_Set_fallback_setup(MBlockFallbackSetup);
 }
 
-CDECL void MBLK_Init(int comm) {
+CLINKAGE void MBLK_Init(int comm) {
   if (TCHARM_Element()==0) {
      CkArrayID threads; int nThreads;
      CkArrayOptions opt=TCHARM_Attach_start(&threads,&nThreads);
@@ -474,27 +474,27 @@ static MBlockChunk *getCurMBlockChunk(void)
 
 /******************************* C Bindings **********************************/
 
-CDECL int 
+CLINKAGE int
 MBLK_Read(const char *prefix,int nDim) {
   getCurMBlockChunk() -> read(prefix,nDim);
   return MBLK_SUCCESS;
 }
 
-CDECL int 
+CLINKAGE int
 MBLK_Get_nblocks(int *n)
 {
   *n = TCHARM_Num_elements();
   return MBLK_SUCCESS;
 }
 
-CDECL int 
+CLINKAGE int
 MBLK_Get_myblock(int *m)
 {
   *m = TCHARM_Element();
   return MBLK_SUCCESS;
 }
 
-CDECL int 
+CLINKAGE int
 MBLK_Get_blocksize(int *dim)
 {
   MBLOCKAPI("MBLK_Get_blocksize");
@@ -505,7 +505,7 @@ MBLK_Get_blocksize(int *dim)
   return MBLK_SUCCESS;
 }
 
-CDECL int 
+CLINKAGE int
 MBLK_Get_nodelocs(const int *nodedim,double *nodeloc) {
   MBLOCKAPI("MBLK_Get_nodelocs");
   block *b=getCurMBlockChunk()->b;
@@ -529,34 +529,34 @@ MBLK_Get_nodelocs(const int *nodedim,double *nodeloc) {
   return MBLK_SUCCESS;
 }
 
-CDECL double 
+CLINKAGE double
 MBLK_Timer(void)
 {
   return TCHARM_Wall_timer();
 }
 
-CDECL void 
+CLINKAGE void
 MBLK_Print(const char *str)
 {
   MBLOCKAPI("MBLK_Print");
   CkPrintf("[%d] %s\n", TCHARM_Element(), str);
 }
 
-CDECL int 
+CLINKAGE int
 MBLK_Register(void *_ud,MBLK_PupFn _pup_ud, int *rid)
 {
   *rid=TCHARM_Register(_ud,_pup_ud);
   return MBLK_SUCCESS;
 }
 
-CDECL int 
+CLINKAGE int
 MBLK_Get_registered(int n, void **b)
 {
   *b=TCHARM_Get_userdata(n);
   return MBLK_SUCCESS;
 }
 
-CDECL int 
+CLINKAGE int
 MBLK_Migrate(void)
 {
   MBLOCKAPI("MBLK_Migrate");
@@ -564,7 +564,7 @@ MBLK_Migrate(void)
   return MBLK_SUCCESS;
 }
 
-CDECL int 
+CLINKAGE int
 MBLK_Create_field(int *dims,int isVoxel,
                  int base_type, int vec_len, 
                  int init_offset, int distance,
@@ -577,7 +577,7 @@ MBLK_Create_field(int *dims,int isVoxel,
   return ((*fid==(-1)) ? MBLK_FAILURE : MBLK_SUCCESS);
 }
 
-CDECL int
+CLINKAGE int
 MBLK_Update_field(int fid, int ghostWidth, void *grid)
 {
   MBLOCKAPI("MBLK_Update_field");
@@ -585,7 +585,7 @@ MBLK_Update_field(int fid, int ghostWidth, void *grid)
   return MBLK_Wait_update();
 }
 
-CDECL int
+CLINKAGE int
 MBLK_Iupdate_field(int fid, int ghostWidth, void *ingrid, void *outgrid)
 {
   MBLOCKAPI("MBLK_Iupdate_field");
@@ -593,7 +593,7 @@ MBLK_Iupdate_field(int fid, int ghostWidth, void *ingrid, void *outgrid)
   return MBLK_SUCCESS;
 }
 
-CDECL int
+CLINKAGE int
 MBLK_Test_update(int *status)
 {
   MBLOCKAPI("MBLK_Test_update");
@@ -601,14 +601,14 @@ MBLK_Test_update(int *status)
   return MBLK_SUCCESS; 
 }
 
-CDECL int
+CLINKAGE int
 MBLK_Wait_update(void)
 {
   MBLOCKAPI("MBLK_Wait_update");
   return getCurMBlockChunk()->wait_update();
 }
 
-CDECL int
+CLINKAGE int
 MBLK_Reduce_field(int fid, void *ingrid, void *outbuf, int op)
 {
   MBLOCKAPI("MBLK_Reduce_field");
@@ -616,7 +616,7 @@ MBLK_Reduce_field(int fid, void *ingrid, void *outbuf, int op)
   return MBLK_SUCCESS;
 }
 
-CDECL int
+CLINKAGE int
 MBLK_Reduce(int fid, void *inbuf, void *outbuf, int op)
 {
   MBLOCKAPI("MBLK_Reduce");
@@ -624,14 +624,14 @@ MBLK_Reduce(int fid, void *inbuf, void *outbuf, int op)
   return MBLK_SUCCESS;
 }
 
-CDECL int
+CLINKAGE int
 MBLK_Register_bc(const int bcnum, int ghostWidth,const MBLK_BcFn bcfn)
 {
   MBLOCKAPI("MBLK_Register_bc");
   return getCurMBlockChunk()->register_bc(bcnum, bcfn, extrudeMethod(ghostWidth), false);
 }
 
-CDECL int
+CLINKAGE int
 MBLK_Apply_bc(const int bcnum, void *p1,void *p2)
 {
   MBLOCKAPI("MBLK_Apply_bc");
@@ -639,7 +639,7 @@ MBLK_Apply_bc(const int bcnum, void *p1,void *p2)
   return retval;
 }
 
-CDECL int
+CLINKAGE int
 MBLK_Apply_bc_all(void *p1,void *p2)
 {
   MBLOCKAPI("MBLK_Apply_bc_all");
@@ -647,7 +647,7 @@ MBLK_Apply_bc_all(void *p1,void *p2)
   return retval;
 }
 
-CDECL void 
+CLINKAGE void
 MBLK_Print_block(void)
 {
   MBLOCKAPI("MBLK_Print_block");
@@ -658,13 +658,13 @@ MBLK_Print_block(void)
 /************************ Fortran Bindings *********************************/
 
 // Utility functions for Fortran
-FDECL int FTN_NAME(FOFFSETOF,foffsetof)
+FLINKAGE int FTN_NAME(FOFFSETOF,foffsetof)
   (void *first, void *second)
 {
   return (int)((char *)second - (char*)first);
 }
 
-FDECL void FTN_NAME(MBLK_READ, mblk_read)
+FLINKAGE void FTN_NAME(MBLK_READ, mblk_read)
   (const char *str, int *nDim,int *ret, int len)
 {
   /* skip over silly Fortran space-padded string */
@@ -676,13 +676,13 @@ FDECL void FTN_NAME(MBLK_READ, mblk_read)
   delete[] tmpstr;
 }
 
-FDECL void FTN_NAME(MBLK_GET_NBLOCKS, mblk_get_nblocks)
+FLINKAGE void FTN_NAME(MBLK_GET_NBLOCKS, mblk_get_nblocks)
   (int *n, int *ret)
 {
   *ret = MBLK_Get_nblocks(n);
 }
 
-FDECL void FTN_NAME(MBLK_GET_MYBLOCK, mblk_get_myblock)
+FLINKAGE void FTN_NAME(MBLK_GET_MYBLOCK, mblk_get_myblock)
   (int *m, int *ret)
 {
   *ret = MBLK_Get_myblock(m);
@@ -690,25 +690,25 @@ FDECL void FTN_NAME(MBLK_GET_MYBLOCK, mblk_get_myblock)
 static void c2f_index3d(int *idx) {
   idx[0]++; idx[1]++; idx[2]++;
 }
-FDECL void FTN_NAME(MBLK_GET_BLOCKSIZE, mblk_get_blocksize)
+FLINKAGE void FTN_NAME(MBLK_GET_BLOCKSIZE, mblk_get_blocksize)
   (int *dims, int *ret)
 {
   *ret = MBLK_Get_blocksize(dims);
 }
 
-FDECL void FTN_NAME(MBLK_GET_NODELOCS,mblk_get_nodelocs)
+FLINKAGE void FTN_NAME(MBLK_GET_NODELOCS,mblk_get_nodelocs)
   (const int *nodedim,double *nodeloc,int *ret) 
 {
   *ret = MBLK_Get_nodelocs(nodedim,nodeloc);
 }
 
-FDECL double FTN_NAME(MBLK_TIMER, mblk_timer)
+FLINKAGE double FTN_NAME(MBLK_TIMER, mblk_timer)
   (void)
 {
   return MBLK_Timer();
 }
 
-FDECL void FTN_NAME(MBLK_PRINT,mblk_print)
+FLINKAGE void FTN_NAME(MBLK_PRINT,mblk_print)
   (char *str, int len)
 {
   char *tmpstr = new char[len+1]; CHK(tmpstr);
@@ -718,80 +718,80 @@ FDECL void FTN_NAME(MBLK_PRINT,mblk_print)
   delete[] tmpstr;
 }
 
-FDECL void FTN_NAME(MBLK_PRINT_BLOCK,mblk_print_block)
+FLINKAGE void FTN_NAME(MBLK_PRINT_BLOCK,mblk_print_block)
   (void)
 {
   MBLK_Print_block();
 }
 
-FDECL void FTN_NAME(MBLK_CREATE_FIELD, mblk_create_field)
+FLINKAGE void FTN_NAME(MBLK_CREATE_FIELD, mblk_create_field)
   (int *dims,int *forVox,int *b, int *l, int *o, int *d, int *f, int *ret)
 {
   *ret = MBLK_Create_field(dims,*forVox,*b, *l, *o, *d, f);
 }
 
-FDECL void FTN_NAME(MBLK_UPDATE_FIELD, mblk_update_field)
+FLINKAGE void FTN_NAME(MBLK_UPDATE_FIELD, mblk_update_field)
   (int *fid, int *ghostWidth,void *grid, int *ret)
 {
   *ret = MBLK_Update_field(*fid,*ghostWidth, grid);
 }
 
-FDECL void FTN_NAME(MBLK_IUPDATE_FIELD, mblk_iupdate_field)
+FLINKAGE void FTN_NAME(MBLK_IUPDATE_FIELD, mblk_iupdate_field)
   (int *fid, int *ghostWidth, void *igrid, void *ogrid, int *ret)
 {
   *ret = MBLK_Iupdate_field(*fid,*ghostWidth, igrid, ogrid);
 }
 
-FDECL void FTN_NAME(MBLK_TEST_UPDATE, mblk_test_update)
+FLINKAGE void FTN_NAME(MBLK_TEST_UPDATE, mblk_test_update)
   (int *status, int *ret)
 {
   *ret = MBLK_Test_update(status);
 }
 
-FDECL void FTN_NAME(MBLK_WAIT_UPDATE, mblk_wait_update)
+FLINKAGE void FTN_NAME(MBLK_WAIT_UPDATE, mblk_wait_update)
   (int *ret)
 {
   *ret = MBLK_Wait_update();
 }
 
-FDECL void FTN_NAME(MBLK_REDUCE_FIELD, mblk_reduce_field)
+FLINKAGE void FTN_NAME(MBLK_REDUCE_FIELD, mblk_reduce_field)
   (int *fid, void *grid, void *out, int *op, int *ret)
 {
   *ret = MBLK_Reduce_field(*fid, grid, out, *op);
 }
 
-FDECL void FTN_NAME(MBLK_REDUCE, mblk_reduce)
+FLINKAGE void FTN_NAME(MBLK_REDUCE, mblk_reduce)
   (int *fid, void *in, void *out, int *op, int *ret)
 {
   *ret = MBLK_Reduce_field(*fid, in, out, *op);
 }
 
-FDECL void FTN_NAME(MBLK_REGISTER_BC, mblk_register_bc)
+FLINKAGE void FTN_NAME(MBLK_REGISTER_BC, mblk_register_bc)
   (int *bcnum, int *ghostWidth,MBLK_BcFn bcfn, int *ret)
 {
   MBLOCKAPI("MBLK_register_bc");
   *ret=getCurMBlockChunk()->register_bc(*bcnum, bcfn, extrudeMethod(*ghostWidth), true);       
 }
 
-FDECL void FTN_NAME(MBLK_APPLY_BC, mblk_apply_bc)
+FLINKAGE void FTN_NAME(MBLK_APPLY_BC, mblk_apply_bc)
   (int *bcnum, void *p1,void *p2, int *ret)
 {
   *ret = MBLK_Apply_bc(*bcnum, p1,p2);
 }
 
-FDECL void FTN_NAME(MBLK_APPLY_BC_ALL, mblk_apply_bc_all)
+FLINKAGE void FTN_NAME(MBLK_APPLY_BC_ALL, mblk_apply_bc_all)
   (void *p1,void *p2, int *ret)
 {
   *ret = MBLK_Apply_bc_all(p1,p2);
 }
 
-FDECL void FTN_NAME(MBLK_REGISTER, mblk_register)
+FLINKAGE void FTN_NAME(MBLK_REGISTER, mblk_register)
   (void *block, MBLK_PupFn pupfn, int *rid, int *ret)
 {
   *ret = MBLK_Register(block, pupfn, rid);
 }
 
-FDECL void FTN_NAME(MBLK_MIGRATE, mblk_migrate)
+FLINKAGE void FTN_NAME(MBLK_MIGRATE, mblk_migrate)
   (int *ret)
 {
   *ret = MBLK_Migrate();
index 305c85d17d1666125f2d478190fe112e57bd562d..38bdbc7892a2ed93db65054dedf84f3355b2adf1 100644 (file)
@@ -132,7 +132,7 @@ typedef int *NetFEMF;
 
 /*----------------------------------------------
 All NetFEM calls must be between a Begin and End pair:*/
-CDECL NetFEM NetFEM_Begin(
+CLINKAGE NetFEM NetFEM_Begin(
        int source,/*Integer ID for the source of this data (need not be sequential)*/
        int timestep,/*Integer ID for this instant (need not be sequential)*/
        int dim,/*Number of spatial dimensions (2 or 3)*/
@@ -145,12 +145,12 @@ CDECL NetFEM NetFEM_Begin(
        //FIXME: actually use source
        return (NetFEM)(new NetFEM_updatePackage(source,timestep,dim,flavor));
 }
-FDECL NetFEMF FTN_NAME(NETFEM_BEGIN,netfem_begin)(int *s,int *t,int *d,int *f)
+FLINKAGE NetFEMF FTN_NAME(NETFEM_BEGIN,netfem_begin)(int *s,int *t,int *d,int *f)
 {
        return (NetFEMF)NetFEM_Begin(*s,*t,*d,*f);
 }
 
-CDECL void NetFEM_End(NetFEM n) { /*Publish these updates*/
+CLINKAGE void NetFEM_End(NetFEM n) { /*Publish these updates*/
        NETFEMAPI("NetFEM_End");
        if (N->getFlavor().doWrite) 
        { /* Write data to disk, in file named "NetFEM/<timestep>/<vp>.dat" */
@@ -176,7 +176,7 @@ CDECL void NetFEM_End(NetFEM n) { /*Publish these updates*/
        }
        getState()->add(N);
 }
-FDECL void FTN_NAME(NETFEM_END,netfem_end)(NetFEMF nf) {
+FLINKAGE void FTN_NAME(NETFEM_END,netfem_end)(NetFEMF nf) {
        NetFEM_End((NetFEM)NF);
 }
 
@@ -185,7 +185,7 @@ FDECL void FTN_NAME(NETFEM_END,netfem_end)(NetFEMF nf) {
    In 3D, node i has location (loc[3*i+0],loc[3*i+1],loc[3*i+2])
 */
 
-CDECL void NetFEM_Nodes_field(NetFEM n,int nNodes,
+CLINKAGE void NetFEM_Nodes_field(NetFEM n,int nNodes,
                int init_offset,int distance,
                const void *loc,const char *name) 
 {
@@ -195,18 +195,18 @@ CDECL void NetFEM_Nodes_field(NetFEM n,int nNodes,
                CkShiftPointer((double *)loc,init_offset),name));
 }
 
-FDECL void FTN_NAME(NETFEM_NODES_FIELD,netfem_nodes_field)
+FLINKAGE void FTN_NAME(NETFEM_NODES_FIELD,netfem_nodes_field)
        (NetFEMF nf,int *nNodes,int *off,int *dist,const void *loc,FTN_STR_DECL)
 {
        CkShortStr s=FTN_STR;
        NetFEM_Nodes_field((NetFEM)NF,*nNodes,*off,*dist,loc,s);
 }
 
-CDECL void NetFEM_Nodes(NetFEM n,int nNodes,const double *loc,const char *name) {
+CLINKAGE void NetFEM_Nodes(NetFEM n,int nNodes,const double *loc,const char *name) {
        NetFEM_Nodes_field(n,nNodes,0,N->getDim()*sizeof(double),loc,name);
 }
 
-FDECL void FTN_NAME(NETFEM_NODES,netfem_nodes)
+FLINKAGE void FTN_NAME(NETFEM_NODES,netfem_nodes)
        (NetFEMF nf,int *nNodes,const double *loc,FTN_STR_DECL)
 {
        CkShortStr s=FTN_STR;
@@ -217,7 +217,7 @@ FDECL void FTN_NAME(NETFEM_NODES,netfem_nodes)
    Element i is adjacent to nodes conn[nodePerEl*i+{0,1,...,nodePerEl-1}]
 */
 
-CDECL void NetFEM_Elements_field(NetFEM n,int nEl,int nodePerEl,
+CLINKAGE void NetFEM_Elements_field(NetFEM n,int nEl,int nodePerEl,
        int initOffset,int bytePerEl,int idxBase,
        const void *conn,const char *name)
 {
@@ -226,7 +226,7 @@ CDECL void NetFEM_Elements_field(NetFEM n,int nEl,int nodePerEl,
                idxBase,CkShiftPointer((int *)conn,initOffset),name));
 }
 
-FDECL void FTN_NAME(NETFEM_ELEMENTS_FIELD,netfem_elements_field)
+FLINKAGE void FTN_NAME(NETFEM_ELEMENTS_FIELD,netfem_elements_field)
        (NetFEMF nf,int *nEl,int *nodePer,
        int *initOff,int *bytePer,int *idxBase,
        const void *conn,FTN_STR_DECL)
@@ -235,12 +235,12 @@ FDECL void FTN_NAME(NETFEM_ELEMENTS_FIELD,netfem_elements_field)
        NetFEM_Elements_field((NetFEM)NF,*nEl,*nodePer,*initOff,*bytePer,*idxBase,conn,s);
 }
 
-CDECL void NetFEM_Elements(NetFEM n,int nEl,int nodePerEl,const int *conn,const char *name)
+CLINKAGE void NetFEM_Elements(NetFEM n,int nEl,int nodePerEl,const int *conn,const char *name)
 {
        NetFEM_Elements_field(n,nEl,nodePerEl,0,sizeof(int)*nodePerEl,0,conn,name);
 }
 
-FDECL void FTN_NAME(NETFEM_ELEMENTS,netfem_elements)
+FLINKAGE void FTN_NAME(NETFEM_ELEMENTS,netfem_elements)
        (NetFEMF nf,int *nEl,int *nodePerEl,const int *conn,FTN_STR_DECL)
 {
        CkShortStr s=FTN_STR;
@@ -253,7 +253,7 @@ FDECL void FTN_NAME(NETFEM_ELEMENTS,netfem_elements)
 Associate a spatial vector (e.g., displacement, velocity, accelleration)
 with each of the previous objects (nodes or elements).
 */
-CDECL void NetFEM_Vector_field(NetFEM n,const void *start,
+CLINKAGE void NetFEM_Vector_field(NetFEM n,const void *start,
        int init_offset,int distance,
        const char *name)
 {
@@ -261,7 +261,7 @@ CDECL void NetFEM_Vector_field(NetFEM n,const void *start,
        NetFEM_format fmt(N->getDim(),distance);
        N->getItem()->add(CkShiftPointer((double *)start,init_offset),fmt,name,true);
 }
-FDECL void FTN_NAME(NETFEM_VECTOR_FIELD,netfem_vector_field)
+FLINKAGE void FTN_NAME(NETFEM_VECTOR_FIELD,netfem_vector_field)
        (NetFEMF nf,const double *start,int *init_offset,int *distance,FTN_STR_DECL)
 {
        NETFEMAPI("NetFEM_vector_field");
@@ -272,11 +272,11 @@ FDECL void FTN_NAME(NETFEM_VECTOR_FIELD,netfem_vector_field)
 /*Simpler version of the above if your data is packed as
 data[item*3+{0,1,2}].
 */
-CDECL void NetFEM_Vector(NetFEM n,const double *data,const char *name)
+CLINKAGE void NetFEM_Vector(NetFEM n,const double *data,const char *name)
 {
        NetFEM_Vector_field(n,data,0,sizeof(double)*N->getDim(),name);
 }
-FDECL void FTN_NAME(NETFEM_VECTOR,netfem_vector)
+FLINKAGE void FTN_NAME(NETFEM_VECTOR,netfem_vector)
        (NetFEMF nf,const double *data,FTN_STR_DECL)
 {
        CkShortStr s=FTN_STR;
@@ -287,7 +287,7 @@ FDECL void FTN_NAME(NETFEM_VECTOR,netfem_vector)
 Associate a scalar (e.g., stress, temperature, pressure, damage)
 with each of the previous objects (nodes or elements).
 */
-CDECL void NetFEM_Scalar_field(NetFEM n,const void *start,
+CLINKAGE void NetFEM_Scalar_field(NetFEM n,const void *start,
        int vec_len,int init_offset,int distance,
        const char *name)
 {
@@ -296,7 +296,7 @@ CDECL void NetFEM_Scalar_field(NetFEM n,const void *start,
        N->getItem()->add(CkShiftPointer((double *)start,init_offset),fmt,name,false);
 }
 
-FDECL void FTN_NAME(NETFEM_SCALAR_FIELD,netfem_scalar_field)
+FLINKAGE void FTN_NAME(NETFEM_SCALAR_FIELD,netfem_scalar_field)
        (NetFEMF nf,const double *start,int *veclen,int *init_offset,
         int *distance,FTN_STR_DECL)
 {
@@ -307,12 +307,12 @@ FDECL void FTN_NAME(NETFEM_SCALAR_FIELD,netfem_scalar_field)
 
 
 /*Simpler version of above for contiguous double-precision data*/
-CDECL void NetFEM_Scalar(NetFEM n,const double *start,int doublePer,
+CLINKAGE void NetFEM_Scalar(NetFEM n,const double *start,int doublePer,
        const char *name)
 {
        NetFEM_Scalar_field(n,start,doublePer,0,sizeof(double)*doublePer,name);
 }
-FDECL void FTN_NAME(NETFEM_SCALAR,netfem_scalar)
+FLINKAGE void FTN_NAME(NETFEM_SCALAR,netfem_scalar)
        (NetFEMF nf,const double *start,int *veclen,FTN_STR_DECL)
 {
        CkShortStr s=FTN_STR;
index 9f6c69dd4b3e7d1671b35cb5e80c8497cdffa14c..73408f04420029189120903b339d0f387241000a 100644 (file)
@@ -1,3 +1,3 @@
 #include "charm-api.h"
 #include "tcharmc.h"
-FDECL void FTN_NAME(TCHARM_USER_NODE_SETUP,tcharm_user_node_setup)(void) {}
+FLINKAGE void FTN_NAME(TCHARM_USER_NODE_SETUP,tcharm_user_node_setup)(void) {}
index c8267c2ffd5bf59228499c200c242c74a8745893..cfb51420bbf36df19d2f6806981f15554d38c40f 100644 (file)
@@ -1,5 +1,5 @@
 #include "charm-api.h"
 #include "tcharmc.h"
-FDECL void FTN_NAME(TCHARM_USER_SETUP,tcharm_user_setup)(void) {
+FLINKAGE void FTN_NAME(TCHARM_USER_SETUP,tcharm_user_setup)(void) {
        TCHARM_User_setup();
 }
index 923c3bc2fce9862417b09defa69760c17d8bf0e0..322ba52b17f371e816e8a66c761d62b4b1244806 100644 (file)
@@ -1,2 +1,2 @@
 #include "charm-api.h"
-CDECL void CkRegisterMainModule(void) {}
+CLINKAGE void CkRegisterMainModule(void) {}
index 3dcafa6702541241f925d6d973c2024a5071ccd5..289155ccef405b7630aa647d4b8829b236db14af 100644 (file)
@@ -1,3 +1,3 @@
 #include "charm-api.h"
 #include "tcharmc.h"
-CDECL void TCHARM_User_node_setup(void) {}
+CLINKAGE void TCHARM_User_node_setup(void) {}
index 112711a8d2430e34c0248275b0c735fd91203908..17914bace97f4235c577e0970b47ca57226fa89f 100644 (file)
@@ -1,5 +1,5 @@
 #include "charm-api.h"
 #include "tcharmc.h"
-CDECL void TCHARM_User_setup(void) {
+CLINKAGE void TCHARM_User_setup(void) {
        TCHARM_Call_fallback_setup();
 }
index 2e4f9350440144c6986569714a01e61d582ab02d..97dce5c67dff495c9d8d36253430a0ef6550c691 100644 (file)
@@ -614,7 +614,7 @@ Callable from UserSetup:
 */
 
 // Read the command line to figure out how many threads to create:
-CDECL int TCHARM_Get_num_chunks()
+CLINKAGE int TCHARM_Get_num_chunks()
 {
        TCHARMAPI("TCHARM_Get_num_chunks");
        if (CkMyPe()!=0) CkAbort("TCHARM_Get_num_chunks should only be called on PE 0 during setup!");
@@ -625,7 +625,7 @@ CDECL int TCHARM_Get_num_chunks()
        lastNumChunks=nChunks;
        return nChunks;
 }
-FDECL int FTN_NAME(TCHARM_GET_NUM_CHUNKS,tcharm_get_num_chunks)()
+FLINKAGE int FTN_NAME(TCHARM_GET_NUM_CHUNKS,tcharm_get_num_chunks)()
 {
        return TCHARM_Get_num_chunks();
 }
@@ -644,33 +644,33 @@ void TCHARM_Thread_options::sanityCheck() {
 TCHARM_Thread_options g_tcharmOptions(1);
 
 /*Set the size of the thread stack*/
-CDECL void TCHARM_Set_stack_size(int newStackSize)
+CLINKAGE void TCHARM_Set_stack_size(int newStackSize)
 {
        TCHARMAPI("TCHARM_Set_stack_size");
        g_tcharmOptions.stackSize=newStackSize;
 }
-FDECL void FTN_NAME(TCHARM_SET_STACK_SIZE,tcharm_set_stack_size)
+FLINKAGE void FTN_NAME(TCHARM_SET_STACK_SIZE,tcharm_set_stack_size)
        (int *newSize)
 { TCHARM_Set_stack_size(*newSize); }
 
-CDECL void TCHARM_Set_exit() { g_tcharmOptions.exitWhenDone=true; }
+CLINKAGE void TCHARM_Set_exit() { g_tcharmOptions.exitWhenDone=true; }
 
 /*Create a new array of threads, which will be bound to by subsequent libraries*/
-CDECL void TCHARM_Create(int nThreads,
+CLINKAGE void TCHARM_Create(int nThreads,
                        int threadFn)
 {
        TCHARMAPI("TCHARM_Create");
        TCHARM_Create_data(nThreads,
                         threadFn,NULL,0);
 }
-FDECL void FTN_NAME(TCHARM_CREATE,tcharm_create)
+FLINKAGE void FTN_NAME(TCHARM_CREATE,tcharm_create)
        (int *nThreads,int threadFn)
 { TCHARM_Create(*nThreads,threadFn); }
 
 static CProxy_TCharm TCHARM_Build_threads(TCharmInitMsg *msg);
 
 /*As above, but pass along (arbitrary) data to threads*/
-CDECL void TCHARM_Create_data(int nThreads,
+CLINKAGE void TCHARM_Create_data(int nThreads,
                  int threadFn,
                  void *threadData,int threadDataLen)
 {
@@ -685,7 +685,7 @@ CDECL void TCHARM_Create_data(int nThreads,
        g_tcharmOptions=TCHARM_Thread_options(1);
 }
 
-FDECL void FTN_NAME(TCHARM_CREATE_DATA,tcharm_create_data)
+FLINKAGE void FTN_NAME(TCHARM_CREATE_DATA,tcharm_create_data)
        (int *nThreads,
                  int threadFn,
                  void *threadData,int *threadDataLen)
@@ -756,20 +756,20 @@ void TCHARM_Suspend() {
 /***********************************
 Callable from worker thread
 */
-CDECL int TCHARM_Element()
+CLINKAGE int TCHARM_Element()
 { 
        TCHARMAPI("TCHARM_Element");
        return TCharm::get()->getElement();
 }
-CDECL int TCHARM_Num_elements()
+CLINKAGE int TCHARM_Num_elements()
 { 
        TCHARMAPI("TCHARM_Num_elements");
        return TCharm::get()->getNumElements();
 }
 
-FDECL int FTN_NAME(TCHARM_ELEMENT,tcharm_element)()
+FLINKAGE int FTN_NAME(TCHARM_ELEMENT,tcharm_element)()
 { return TCHARM_Element();}
-FDECL int FTN_NAME(TCHARM_NUM_ELEMENTS,tcharm_num_elements)()
+FLINKAGE int FTN_NAME(TCHARM_NUM_ELEMENTS,tcharm_num_elements)()
 { return TCHARM_Num_elements();}
 
 //Make sure this address will migrate with us when we move:
@@ -788,13 +788,13 @@ static void checkAddress(void *data)
 }
 
 /* Old "register"-based userdata: */
-CDECL int TCHARM_Register(void *data,TCHARM_Pup_fn pfn)
+CLINKAGE int TCHARM_Register(void *data,TCHARM_Pup_fn pfn)
 { 
        TCHARMAPI("TCHARM_Register");
        checkAddress(data);
        return TCharm::get()->add(TCharm::UserData(pfn,TCharm::get()->getThread(),data));
 }
-FDECL int FTN_NAME(TCHARM_REGISTER,tcharm_register)
+FLINKAGE int FTN_NAME(TCHARM_REGISTER,tcharm_register)
        (void *data,TCHARM_Pup_fn pfn)
 { 
        TCHARMAPI("TCHARM_Register");
@@ -802,16 +802,16 @@ FDECL int FTN_NAME(TCHARM_REGISTER,tcharm_register)
        return TCharm::get()->add(TCharm::UserData(pfn,TCharm::get()->getThread(),data));
 }
 
-CDECL void *TCHARM_Get_userdata(int id)
+CLINKAGE void *TCHARM_Get_userdata(int id)
 {
        TCHARMAPI("TCHARM_Get_userdata");
        return TCharm::get()->lookupUserData(id);
 }
-FDECL void *FTN_NAME(TCHARM_GET_USERDATA,tcharm_get_userdata)(int *id)
+FLINKAGE void *FTN_NAME(TCHARM_GET_USERDATA,tcharm_get_userdata)(int *id)
 { return TCHARM_Get_userdata(*id); }
 
 /* New hardcoded-ID userdata: */
-CDECL void TCHARM_Set_global(int globalID,void *new_value,TCHARM_Pup_global_fn pup_or_NULL)
+CLINKAGE void TCHARM_Set_global(int globalID,void *new_value,TCHARM_Pup_global_fn pup_or_NULL)
 {
        TCHARMAPI("TCHARM_Set_global");
        TCharm *tc=TCharm::get();
@@ -822,7 +822,7 @@ CDECL void TCHARM_Set_global(int globalID,void *new_value,TCHARM_Pup_global_fn p
        }
        tc->sud[globalID]=TCharm::UserData(pup_or_NULL,tc->getThread(),new_value);
 }
-CDECL void *TCHARM_Get_global(int globalID)
+CLINKAGE void *TCHARM_Get_global(int globalID)
 {
        //Skip TCHARMAPI("TCHARM_Get_global") because there's no dynamic allocation here,
        // and this routine should be as fast as possible.
@@ -831,7 +831,7 @@ CDECL void *TCHARM_Get_global(int globalID)
        return v[globalID].getData();
 }
 
-CDECL void TCHARM_Migrate()
+CLINKAGE void TCHARM_Migrate()
 {
        TCHARMAPI("TCHARM_Migrate");
        if (CthMigratable() == 0) {
@@ -843,28 +843,28 @@ CDECL void TCHARM_Migrate()
 }
 FORTRAN_AS_C(TCHARM_MIGRATE,TCHARM_Migrate,tcharm_migrate,(void),())
 
-CDECL void TCHARM_Async_Migrate()
+CLINKAGE void TCHARM_Async_Migrate()
 {
        TCHARMAPI("TCHARM_Async_Migrate");
        TCharm::get()->async_migrate();
 }
 FORTRAN_AS_C(TCHARM_ASYNC_MIGRATE,TCHARM_Async_Migrate,tcharm_async_migrate,(void),())
 
-CDECL void TCHARM_Allow_Migrate()
+CLINKAGE void TCHARM_Allow_Migrate()
 {
        TCHARMAPI("TCHARM_Allow_Migrate");
        TCharm::get()->allow_migrate();
 }
 FORTRAN_AS_C(TCHARM_ALLOW_MIGRATE,TCHARM_Allow_Migrate,tcharm_allow_migrate,(void),())
 
-CDECL void TCHARM_Migrate_to(int destPE)
+CLINKAGE void TCHARM_Migrate_to(int destPE)
 {
        TCHARMAPI("TCHARM_Migrate_to");
        TCharm::get()->migrateTo(destPE);
 }
 
 #if CMK_FAULT_EVAC
-CDECL void TCHARM_Evacuate()
+CLINKAGE void TCHARM_Evacuate()
 {
        TCHARMAPI("TCHARM_Migrate_to");
        TCharm::get()->evacuate();
@@ -874,21 +874,21 @@ CDECL void TCHARM_Evacuate()
 FORTRAN_AS_C(TCHARM_MIGRATE_TO,TCHARM_Migrate_to,tcharm_migrate_to,
        (int *destPE),(*destPE))
 
-CDECL void TCHARM_Yield()
+CLINKAGE void TCHARM_Yield()
 {
        TCHARMAPI("TCHARM_Yield");
        TCharm::get()->schedule();
 }
 FORTRAN_AS_C(TCHARM_YIELD,TCHARM_Yield,tcharm_yield,(void),())
 
-CDECL void TCHARM_Barrier()
+CLINKAGE void TCHARM_Barrier()
 {
        TCHARMAPI("TCHARM_Barrier");
        TCharm::get()->barrier();
 }
 FORTRAN_AS_C(TCHARM_BARRIER,TCHARM_Barrier,tcharm_barrier,(void),())
 
-CDECL void TCHARM_Done(int exitcode)
+CLINKAGE void TCHARM_Done(int exitcode)
 {
        TCHARMAPI("TCHARM_Done");
        TCharm *c=TCharm::getNULL();
@@ -898,7 +898,7 @@ CDECL void TCHARM_Done(int exitcode)
 FORTRAN_AS_C(TCHARM_DONE,TCHARM_Done,tcharm_done,(int *exitcode),(*exitcode))
 
 
-CDECL double TCHARM_Wall_timer()
+CLINKAGE double TCHARM_Wall_timer()
 {
   TCHARMAPI("TCHARM_Wall_timer");
   TCharm *c=TCharm::getNULL();
@@ -912,12 +912,12 @@ CDECL double TCHARM_Wall_timer()
 /*Include Fortran-style "iargc" and "getarg" routines.
 These are needed to get access to the command-line arguments from Fortran.
 */
-FDECL int FTN_NAME(TCHARM_IARGC,tcharm_iargc)() {
+FLINKAGE int FTN_NAME(TCHARM_IARGC,tcharm_iargc)() {
   TCHARMAPI("tcharm_iargc");
   return CkGetArgc()-1;
 }
 
-FDECL void FTN_NAME(TCHARM_GETARG,tcharm_getarg)
+FLINKAGE void FTN_NAME(TCHARM_GETARG,tcharm_getarg)
        (int *i_p,char *dest,int destLen)
 {
   TCHARMAPI("tcharm_getarg");
@@ -933,14 +933,14 @@ FDECL void FTN_NAME(TCHARM_GETARG,tcharm_getarg)
 
 //These silly routines are used for serial startup:
 extern void _initCharm(int argc, char **argv);
-CDECL void TCHARM_Init(int *argc,char ***argv) {
+CLINKAGE void TCHARM_Init(int *argc,char ***argv) {
        if (!tcharm_initted) {
          ConverseInit(*argc, *argv, (CmiStartFn) _initCharm,1,1);
          _initCharm(*argc,*argv);
        }
 }
 
-FDECL void FTN_NAME(TCHARM_INIT,tcharm_init)()
+FLINKAGE void FTN_NAME(TCHARM_INIT,tcharm_init)()
 {
        int argc=1;
        const char *argv_sto[2]={"foo",NULL};
@@ -1039,7 +1039,7 @@ passing the request out of the thread to our array element
 before calling system().
 */
 
-CDECL int 
+CLINKAGE int
 TCHARM_System(const char *shell_command)
 {
        return TCharm::get()->system(shell_command);
index 0772af05ce58a089a90db436d3b43a70b746c733..eeed322eb4a20d348bf1c8f45344463b07fe863a 100644 (file)
@@ -430,8 +430,8 @@ public:
 #define TCHARMAPI(routineName) TCHARM_API_TRACE(routineName,"tcharm");
 
 //Node setup callbacks: called at startup on each node
-FDECL void FTN_NAME(TCHARM_USER_NODE_SETUP,tcharm_user_node_setup)(void);
-FDECL void FTN_NAME(TCHARM_USER_SETUP,tcharm_user_setup)(void);
+FLINKAGE void FTN_NAME(TCHARM_USER_NODE_SETUP,tcharm_user_node_setup)(void);
+FLINKAGE void FTN_NAME(TCHARM_USER_SETUP,tcharm_user_setup)(void);
 
 
 #endif
index 9472c55e9af526768ad76e8795dc496317e5eeee..2296dbfdd5aa0522d6e29737d700df1e96346574 100644 (file)
@@ -36,7 +36,7 @@ void FEM_REFINE2D_Init(){
   REFINE2D_Init();     
 }
 
-FDECL void FTN_NAME(FEM_REFINE2D_INIT,fem_refine2d_init)(void)
+FLINKAGE void FTN_NAME(FEM_REFINE2D_INIT,fem_refine2d_init)(void)
 {
   FEM_REFINE2D_Init();
 }
@@ -83,7 +83,7 @@ void FEM_REFINE2D_Newmesh(int meshID,int nodeID,int elemID){
        delete [] tempMesh;
 }
 
-FDECL void FTN_NAME(FEM_REFINE2D_NEWMESH,fem_refine2d_newmesh)(int *meshID,int *nodeID,int *elemID){
+FLINKAGE void FTN_NAME(FEM_REFINE2D_NEWMESH,fem_refine2d_newmesh)(int *meshID,int *nodeID,int *elemID){
        FEM_REFINE2D_Newmesh(*meshID,*nodeID,*elemID);
 }
 
@@ -342,6 +342,6 @@ void FEM_REFINE2D_Split(int meshID,int nodeID,double *coord,int elemID,double *d
        
 }
 
-FDECL void FTN_NAME(FEM_REFINE2D_SPLIT,fem_refine2d_split)(int *meshID,int *nodeID,double *coord,int *elemID,double *desiredAreas){
+FLINKAGE void FTN_NAME(FEM_REFINE2D_SPLIT,fem_refine2d_split)(int *meshID,int *nodeID,double *coord,int *elemID,double *desiredAreas){
        FEM_REFINE2D_Split(*meshID,*nodeID,coord,*elemID,desiredAreas);
 }
index c991d27b09697810c1061eb28199f9819a841d0e..aeba2ef49f49e8a375a4b3d13234f8688cf95d9a 100644 (file)
@@ -15,7 +15,7 @@ Modified by Terry Wilmarth, wilmarth@cse.uiuc.edu, 4/16/2002
 #include "refine.h"
 
 /********************* Attach *****************/
-CDECL void REFINE2D_Init(void) {
+CLINKAGE void REFINE2D_Init(void) {
   TCHARM_API_TRACE("REFINE2D_Init", "refine");
   TCharm *tc=TCharm::get();
   
@@ -39,13 +39,13 @@ CDECL void REFINE2D_Init(void) {
   mesh[rank].insert(cm);
   tc->suspend(); /* will resume from chunk constructor */
 }
-FDECL void FTN_NAME(REFINE2D_INIT,refine2d_init)(void)
+FLINKAGE void FTN_NAME(REFINE2D_INIT,refine2d_init)(void)
 {
   REFINE2D_Init();
 }
 
 /******************** NewMesh *******************/
-CDECL void REFINE2D_NewMesh(int nEl,int nGhost,const int *conn,const int *gid)
+CLINKAGE void REFINE2D_NewMesh(int nEl,int nGhost,const int *conn,const int *gid)
 {
   TCHARM_API_TRACE("REFINE2D_NewMesh", "refine");
   if (!CtvAccess(_refineChunk))
@@ -56,7 +56,7 @@ CDECL void REFINE2D_NewMesh(int nEl,int nGhost,const int *conn,const int *gid)
   CtvAccess(_refineChunk)->newMesh(nEl,nGhost,conn, gid, 0);
   CkWaitQD(); //Wait for all edge numbering messages to finish
 }
-FDECL void FTN_NAME(REFINE2D_NEWMESH,refine2d_newmesh)
+FLINKAGE void FTN_NAME(REFINE2D_NEWMESH,refine2d_newmesh)
 (int *nEl,int *nGhost,const int *conn,const int *gid)
 {
   TCHARM_API_TRACE("REFINE2D_NewMesh", "refine");
@@ -144,7 +144,7 @@ public:
 };
 
 // this function should be called from a thread
-CDECL void REFINE2D_Split(int nNode,double *coord,int nEl,double *desiredArea)
+CLINKAGE void REFINE2D_Split(int nNode,double *coord,int nEl,double *desiredArea)
 {
   TCHARM_API_TRACE("REFINE2D_Split", "refine");
   chunk *C = CtvAccess(_refineChunk);
@@ -157,7 +157,7 @@ CDECL void REFINE2D_Split(int nNode,double *coord,int nEl,double *desiredArea)
   C->multipleRefine(desiredArea, &client);
   CkWaitQD();
 }
-FDECL void FTN_NAME(REFINE2D_SPLIT,refine2d_split)
+FLINKAGE void FTN_NAME(REFINE2D_SPLIT,refine2d_split)
    (int *nNode,double *coord,int *nEl,double *desiredArea)
 {
   REFINE2D_Split(*nNode,coord,*nEl,desiredArea);
@@ -173,24 +173,24 @@ static refineResults *getResults(void) {
   return ret;
 }
 
-CDECL int REFINE2D_Get_Split_Length(void)
+CLINKAGE int REFINE2D_Get_Split_Length(void)
 {
   TCHARM_API_TRACE("REFINE2D_Get_Split_Length", "refine");
   return getResults()->countResults();
 }
-FDECL int FTN_NAME(REFINE2D_GET_SPLIT_LENGTH,refine2d_get_split_length)(void)
+FLINKAGE int FTN_NAME(REFINE2D_GET_SPLIT_LENGTH,refine2d_get_split_length)(void)
 {
   return REFINE2D_Get_Split_Length();
 }
 
-CDECL void REFINE2D_Get_Split
+CLINKAGE void REFINE2D_Get_Split
     (int splitNo,const int *conn,int *triDest,int *A,int *B,int *C,double *fracDest,int *flags)
 {
   TCHARM_API_TRACE("REFINE2D_Get_Split", "refine");
   refineResults *r=getResults();
   r->extract(splitNo,conn,triDest,A,B,C,fracDest,0,flags);
 }
-FDECL void FTN_NAME(REFINE2D_GET_SPLIT,refine2d_get_split)
+FLINKAGE void FTN_NAME(REFINE2D_GET_SPLIT,refine2d_get_split)
     (int *splitNo,const int *conn,int *triDest,int *A,int *B,int *C,double *fracDest, int *flags)
 {
   TCHARM_API_TRACE("REFINE2D_Get_Split", "refine");
@@ -253,10 +253,10 @@ static void checkConn(int nEl,const int *conn,int idxBase,int nNode)
   }
 }
 
-CDECL void REFINE2D_Check(int nEl,const int *conn,int nNodes) {
+CLINKAGE void REFINE2D_Check(int nEl,const int *conn,int nNodes) {
   checkConn(nEl,conn,0,nNodes);
 }
-FDECL void FTN_NAME(REFINE2D_CHECK,refine2d_check)
+FLINKAGE void FTN_NAME(REFINE2D_CHECK,refine2d_check)
   (int *nEl,const int *conn,int *nNodes)
 {
   checkConn(*nEl,conn,1,*nNodes);
index 1c548e91dc57996b48ec0497288e4293fa560268..50106e0411775983739e3d86b1095f605416f69b 100644 (file)
@@ -50,14 +50,14 @@ int _Cmi_numnodes=1;
 
 /* CmiWallTimer support */
 double _cpu_speed_factor=0.0;
-CDECL double CmiTimer(void) {return 0.0;}
+CLINKAGE double CmiTimer(void) {return 0.0;}
 #ifndef CmiWallTimer
-CDECL double CmiWallTimer(void) {return 0.0;}
+CLINKAGE double CmiWallTimer(void) {return 0.0;}
 #endif
 
 /* Mini-micro TCHARM */
 #include "tcharmc.h"
-CDECL void TCHARM_Migrate(void) {}
+CLINKAGE void TCHARM_Migrate(void) {}
 
 enum {tc_global_max=64};
 void *tc_globals[tc_global_max];
@@ -70,29 +70,29 @@ void *TCHARM_Get_global(int globalID) {
 
 
 /* FIXME: add real calls based on MPI here: */
-CDECL int TCHARM_Register(void *data,TCHARM_Pup_fn pfn) {return -1;}
+CLINKAGE int TCHARM_Register(void *data,TCHARM_Pup_fn pfn) {return -1;}
 FORTRAN_AS_C_RETURN(int,TCHARM_REGISTER,TCHARM_Register,tcharm_register,
        (void *data,TCHARM_Pup_fn pfn),(data,pfn))
 
-CDECL void *TCHARM_Get_userdata(int id) {return 0;}
+CLINKAGE void *TCHARM_Get_userdata(int id) {return 0;}
 
-CDECL void TCHARM_Done(int exitcode) { /* fallthrough */ }
+CLINKAGE void TCHARM_Done(int exitcode) { /* fallthrough */ }
 FORTRAN_AS_C(TCHARM_DONE,TCHARM_Done,tcharm_done,(int *exitcode),(*exitcode))
 
-CDECL void TCHARM_Barrier(void) { /* fallthrough */ }
+CLINKAGE void TCHARM_Barrier(void) { /* fallthrough */ }
 FORTRAN_AS_C(TCHARM_BARRIER,TCHARM_Barrier,tcharm_barrier,(void),())
 
-CDECL int TCHARM_Element(void) {return 0;}
+CLINKAGE int TCHARM_Element(void) {return 0;}
 FORTRAN_AS_C_RETURN(int,TCHARM_ELEMENT,TCHARM_Element,tcharm_element,(void),())
 
-CDECL int TCHARM_Num_elements(void) {return 1;}
+CLINKAGE int TCHARM_Num_elements(void) {return 1;}
 FORTRAN_AS_C_RETURN(int,TCHARM_NUM_ELEMENTS,TCHARM_Num_elements,tcharm_num_elements,(void),())
 
-CDECL double TCHARM_Wall_timer(void) {return 0.0;}
+CLINKAGE double TCHARM_Wall_timer(void) {return 0.0;}
 FORTRAN_AS_C_RETURN(double,TCHARM_WALL_TIMER,TCHARM_Wall_timer,tcharm_wall_timer,(void),())
 
 #define FORTRAN_TCHARM_UNIMPLEMENTED(ROUTINE,routine) \
-FDECL void FTN_NAME(TCHARM_##ROUTINE,tcharm_##routine)(void) \
+FLINKAGE void FTN_NAME(TCHARM_##ROUTINE,tcharm_##routine)(void) \
        { CkAbort("Sorry, standalone mode does not have TCHARM_" #ROUTINE); }
 
 FORTRAN_TCHARM_UNIMPLEMENTED(INIT,init)
@@ -107,7 +107,7 @@ FORTRAN_TCHARM_UNIMPLEMENTED(YIELD,yeild)
 /* Command-line argument handling */
 static char **saved_argv=NULL;
 
-CDECL int CmiGetArgFlagDesc(char **argv,const char *arg,const char *desc) {
+CLINKAGE int CmiGetArgFlagDesc(char **argv,const char *arg,const char *desc) {
        int i;
        saved_argv=argv;
        for (i=0;argv[i]!=NULL;i++)
@@ -118,7 +118,7 @@ CDECL int CmiGetArgFlagDesc(char **argv,const char *arg,const char *desc) {
        return 0;/*Didn't find the argument*/
 }
 
-CDECL int CmiGetArgIntDesc(char **argv,const char *arg,int *optDest,const char *desc) {
+CLINKAGE int CmiGetArgIntDesc(char **argv,const char *arg,int *optDest,const char *desc) {
        int i;
        saved_argv=argv;
        for (i=0;argv[i]!=NULL;i++)
@@ -130,7 +130,7 @@ CDECL int CmiGetArgIntDesc(char **argv,const char *arg,int *optDest,const char *
        return 0;/*Didn't find the argument*/
 }
 
-FDECL void FTN_NAME(TCHARM_GETARG,tcharm_getarg)(int *arg,char *dest,int destLen) {
+FLINKAGE void FTN_NAME(TCHARM_GETARG,tcharm_getarg)(int *arg,char *dest,int destLen) {
        if (saved_argv==NULL)
                CkAbort("TCHARM_GETARG not supported in FEM_ALONE mode!\n");
        else /* actually have a saved argument-- return it */ {
index 0ecd7455c8379478d36f18973bce453046e9f22d..1741cecf4a695f99e3bc6827f085b110beeec7ce 100644 (file)
@@ -22,72 +22,72 @@ a C++ "PUP::er &" type.  We actually want a
 #define mp (*(PUP::er *)p)
 
 /*Allocate PUP::er of different kind */
-CDECL pup_er pup_new_sizer(void)
+CLINKAGE pup_er pup_new_sizer(void)
   { return new PUP::sizer; }
-CDECL pup_er pup_new_toMem(void *Nbuf)
+CLINKAGE pup_er pup_new_toMem(void *Nbuf)
   { return new PUP::toMem(Nbuf); }
-CDECL pup_er pup_new_fromMem(const void *Nbuf)
+CLINKAGE pup_er pup_new_fromMem(const void *Nbuf)
   { return new PUP::fromMem(Nbuf); }
-CDECL pup_er pup_new_network_sizer(void)
+CLINKAGE pup_er pup_new_network_sizer(void)
   { return new PUP_toNetwork_sizer; }
-CDECL pup_er pup_new_network_pack(void *Nbuf)
+CLINKAGE pup_er pup_new_network_pack(void *Nbuf)
   { return new PUP_toNetwork_pack(Nbuf); }
-CDECL pup_er pup_new_network_unpack(const void *Nbuf)
+CLINKAGE pup_er pup_new_network_unpack(const void *Nbuf)
   { return new PUP_toNetwork_unpack(Nbuf); }
 #if CMK_CCS_AVAILABLE
 #include "ccs-builtins.h"
-CDECL pup_er pup_new_fmt(pup_er p)
+CLINKAGE pup_er pup_new_fmt(pup_er p)
   { return new PUP_fmt(mp); }
-CDECL void pup_fmt_sync_begin_object(pup_er p)
+CLINKAGE void pup_fmt_sync_begin_object(pup_er p)
   { mp.synchronize(PUP::sync_begin_object); }
-CDECL void pup_fmt_sync_end_object(pup_er p)
+CLINKAGE void pup_fmt_sync_end_object(pup_er p)
   { mp.synchronize(PUP::sync_end_object); }
-CDECL void pup_fmt_sync_begin_array(pup_er p)
+CLINKAGE void pup_fmt_sync_begin_array(pup_er p)
   { mp.synchronize(PUP::sync_begin_array); }
-CDECL void pup_fmt_sync_end_array(pup_er p)
+CLINKAGE void pup_fmt_sync_end_array(pup_er p)
   { mp.synchronize(PUP::sync_end_array); }
-CDECL void pup_fmt_sync_item(pup_er p)
+CLINKAGE void pup_fmt_sync_item(pup_er p)
   { mp.syncComment(PUP::sync_item); }
 #endif
-CDECL void pup_destroy(pup_er p)
+CLINKAGE void pup_destroy(pup_er p)
   { delete ((PUP::er *)p); }
 
 /*Determine what kind of pup_er we have--
 return 1 for true, 0 for false.*/
-CDECL int pup_isPacking(const pup_er p)
+CLINKAGE int pup_isPacking(const pup_er p)
   { return (mp.isPacking())?1:0;}
-CDECL int pup_isUnpacking(const pup_er p)
+CLINKAGE int pup_isUnpacking(const pup_er p)
   { return (mp.isUnpacking())?1:0;}
-CDECL int pup_isSizing(const pup_er p)
+CLINKAGE int pup_isSizing(const pup_er p)
   { return (mp.isSizing())?1:0;}
-CDECL int pup_isDeleting(const pup_er p)
+CLINKAGE int pup_isDeleting(const pup_er p)
   { return (mp.isDeleting())?1:0;}
-CDECL int pup_isUserlevel(const pup_er p)
+CLINKAGE int pup_isUserlevel(const pup_er p)
   { return (mp.isUserlevel())?1:0;}
-CDECL int pup_isRestarting(const pup_er p)
+CLINKAGE int pup_isRestarting(const pup_er p)
   { return (mp.isRestarting())?1:0;}
-CDECL char* pup_typeString(const pup_er p)
+CLINKAGE char* pup_typeString(const pup_er p)
   { return (char *)mp.typeString(); }
 
-FDECL int FTN_NAME(FPUP_ISPACKING,fpup_ispacking)(const pup_er p)
+FLINKAGE int FTN_NAME(FPUP_ISPACKING,fpup_ispacking)(const pup_er p)
   { return (mp.isPacking())?1:0;}
-FDECL int FTN_NAME(FPUP_ISUNPACKING,fpup_isunpacking)(const pup_er p)
+FLINKAGE int FTN_NAME(FPUP_ISUNPACKING,fpup_isunpacking)(const pup_er p)
   { return (mp.isUnpacking())?1:0;}
-FDECL int FTN_NAME(FPUP_ISSIZING,fpup_issizing)(const pup_er p)
+FLINKAGE int FTN_NAME(FPUP_ISSIZING,fpup_issizing)(const pup_er p)
   { return (mp.isSizing())?1:0;}
-FDECL int FTN_NAME(FPUP_ISDELETING,fpup_isdeleting)(const pup_er p)
+FLINKAGE int FTN_NAME(FPUP_ISDELETING,fpup_isdeleting)(const pup_er p)
   { return (mp.isDeleting())?1:0;}
-FDECL int FTN_NAME(FPUP_ISUSERLEVEL,fpup_isuserlevel)(const pup_er p)
+FLINKAGE int FTN_NAME(FPUP_ISUSERLEVEL,fpup_isuserlevel)(const pup_er p)
   { return (mp.isUserlevel())?1:0;}
 
 /*Read the size of the pupper */
-CDECL size_t pup_size(const pup_er p)
+CLINKAGE size_t pup_size(const pup_er p)
   { return mp.size(); }
 
 #define SIZE_APPROX_BITS 13
 
 /* Utilities to approximately encode large sizes, within 0.5% */
-CDECL CMK_TYPEDEF_UINT2 pup_encodeSize(size_t s)
+CLINKAGE CMK_TYPEDEF_UINT2 pup_encodeSize(size_t s)
 {
   // Use the top two bits to indicate a scaling factor as a power of 256. At
   // each step up in size, we'll thus lose the bottom 8 bits out of 14:
@@ -104,7 +104,7 @@ CDECL CMK_TYPEDEF_UINT2 pup_encodeSize(size_t s)
   return (power << SIZE_APPROX_BITS) | s;
 }
 
-CDECL size_t pup_decodeSize(CMK_TYPEDEF_UINT2 a)
+CLINKAGE size_t pup_decodeSize(CMK_TYPEDEF_UINT2 a)
 {
   CmiUInt2 power = a >> SIZE_APPROX_BITS;
   size_t factor = 1UL << (8 * power);
@@ -115,11 +115,11 @@ CDECL size_t pup_decodeSize(CMK_TYPEDEF_UINT2 a)
 }
 
 /*Insert a synchronization into the data stream */
-CDECL void pup_syncComment(const pup_er p, unsigned int sync, const char *message)
+CLINKAGE void pup_syncComment(const pup_er p, unsigned int sync, const char *message)
   { mp.syncComment(sync, message); }
-/*FDECL void FNT_NAME(FPUP_SYNCCOMMENT,fpup_syncComment)(const pup_er p, unsigned int sync, const char *message)
+/*FLINKAGE void FNT_NAME(FPUP_SYNCCOMMENT,fpup_syncComment)(const pup_er p, unsigned int sync, const char *message)
   { mp.syncComment(sync, message); }*/
-CDECL void pup_comment(const pup_er p, const char *message)
+CLINKAGE void pup_comment(const pup_er p, const char *message)
   { mp.comment(message); }
 
 #undef PUP_BASIC_DATATYPE /*from pup_c.h*/
@@ -133,9 +133,9 @@ void pup_ints(pup_er p,int *iarr,size_t nItems) <- array pack/unpack
   {(PUP::er * cast p)(iarr,nItems);}
 */
 #define PUP_BASIC_DATATYPE(typeName,type) \
- CDECL void pup_##typeName(pup_er p,type *v) \
+ CLINKAGE void pup_##typeName(pup_er p,type *v) \
    {mp(*v);} \
- CDECL void pup_##typeName##s(pup_er p,type *arr,size_t nItems) \
+ CLINKAGE void pup_##typeName##s(pup_er p,type *arr,size_t nItems) \
    {mp(arr,nItems);}
 
 PUP_BASIC_DATATYPE(char,char)
@@ -152,15 +152,15 @@ PUP_BASIC_DATATYPE(int8,CMK_TYPEDEF_INT8)
 PUP_BASIC_DATATYPE(size_t,size_t)
 
 // Pointers have a different signature, so they need special treatment
-CDECL void pup_pointer(pup_er p,void **v) {mp(*v,(void*)NULL);}
-CDECL void pup_pointers(pup_er p,void **arr,size_t nItems) {mp(arr,nItems,(void*)NULL);}
+CLINKAGE void pup_pointer(pup_er p,void **v) {mp(*v,(void*)NULL);}
+CLINKAGE void pup_pointers(pup_er p,void **arr,size_t nItems) {mp(arr,nItems,(void*)NULL);}
 
 #define PUP_BASIC_DATATYPEF(typeUP,typelo,type) \
- FDECL void FTN_NAME(FPUP_##typeUP,fpup_##typelo)(pup_er p,type *v) \
+ FLINKAGE void FTN_NAME(FPUP_##typeUP,fpup_##typelo)(pup_er p,type *v) \
    {mp(*v);} \
- FDECL void FTN_NAME(FPUP_##typeUP##SG,fpup_##typelo##sg)(pup_er p,type *arr,int *nItems) \
+ FLINKAGE void FTN_NAME(FPUP_##typeUP##SG,fpup_##typelo##sg)(pup_er p,type *arr,int *nItems) \
    {mp(arr,*nItems);} \
- FDECL void FTN_NAME(FPUP_##typeUP##S,fpup_##typelo##s)(pup_er p,type *arr,int *nItems) \
+ FLINKAGE void FTN_NAME(FPUP_##typeUP##S,fpup_##typelo##s)(pup_er p,type *arr,int *nItems) \
    {mp(arr,*nItems);}
 
 PUP_BASIC_DATATYPEF(CHAR,char,char)
@@ -172,31 +172,31 @@ PUP_BASIC_DATATYPEF(DOUBLE,double,double)
 PUP_BASIC_DATATYPEF(LOGICAL,logical,int)
 
 
-FDECL void FTN_NAME(FPUP_COMPLEX,fpup_complex)(pup_er p, float *v)
+FLINKAGE void FTN_NAME(FPUP_COMPLEX,fpup_complex)(pup_er p, float *v)
 {mp(v,2);}
 
-FDECL void FTN_NAME(FPUP_COMPLEXESG,fpup_complexesg)(pup_er p, float *arr, int *nItems)
+FLINKAGE void FTN_NAME(FPUP_COMPLEXESG,fpup_complexesg)(pup_er p, float *arr, int *nItems)
 {mp(arr,2*(*nItems));}
 
-FDECL void FTN_NAME(FPUP_COMPLEXES,fpup_complexes)(pup_er p, float *arr, int *nItems)
+FLINKAGE void FTN_NAME(FPUP_COMPLEXES,fpup_complexes)(pup_er p, float *arr, int *nItems)
 {mp(arr,2*(*nItems));}
 
-FDECL void FTN_NAME(FPUP_DOUBLECOMPLEX,fpup_doublecomplex)(pup_er p, double *v)
+FLINKAGE void FTN_NAME(FPUP_DOUBLECOMPLEX,fpup_doublecomplex)(pup_er p, double *v)
 {mp(v,2);}
 
-FDECL void FTN_NAME(FPUP_DOUBLECOMPLEXESG,fpup_doublecomplexesg)(pup_er p, double *arr, int *nItems)
+FLINKAGE void FTN_NAME(FPUP_DOUBLECOMPLEXESG,fpup_doublecomplexesg)(pup_er p, double *arr, int *nItems)
 {mp(arr,2*(*nItems));}
 
-FDECL void FTN_NAME(FPUP_DOUBLECOMPLEXES,fpup_doublecomplexes)(pup_er p, double *arr, int *nItems)
+FLINKAGE void FTN_NAME(FPUP_DOUBLECOMPLEXES,fpup_doublecomplexes)(pup_er p, double *arr, int *nItems)
 {mp(arr,2*(*nItems));}
 
 /*Pack/unpack untyped byte array:*/
-CDECL void pup_bytes(pup_er p,void *ptr,size_t nBytes)
+CLINKAGE void pup_bytes(pup_er p,void *ptr,size_t nBytes)
 {
   mp((char *)ptr,nBytes);
 }
 
-FDECL void FTN_NAME(FPUP_BYTES,fpup_bytes)(pup_er p,void *ptr,int *nBytes)
+FLINKAGE void FTN_NAME(FPUP_BYTES,fpup_bytes)(pup_er p,void *ptr,int *nBytes)
 {
   mp((char *)ptr,*nBytes);
 }
index 55a1b1b6344ea8aa395ac16d80b961f9d03c025c..0e6f605d055f20ba041fe4d8b9e056354bdc9a7e 100644 (file)
 #define result_indent "  "
 
 #define test_privatization FTN_NAME(TEST_PRIVATIZATION, test_privatization)
-FDECL void test_privatization(int & failed, int & rank, int & my_wth, int & global);
+FLINKAGE void test_privatization(int & failed, int & rank, int & my_wth, int & global);
 #define privatization_test_framework FTN_NAME(PRIVATIZATION_TEST_FRAMEWORK, privatization_test_framework)
-FDECL void privatization_test_framework(void);
+FLINKAGE void privatization_test_framework(void);
 
 #define perform_test_batch FTN_NAME(PERFORM_TEST_BATCH, perform_test_batch)
-FDECL void perform_test_batch(int & failed, int & rank, int & my_wth);
+FLINKAGE void perform_test_batch(int & failed, int & rank, int & my_wth);
 
 #endif
index 628c61c7f4741ecfd1719f995876b3dc185609eb..d635d35a074a93310a9cccfdaad6f30359260c14 100644 (file)
@@ -3,9 +3,9 @@ FEM Test routines: external interface
 */
 #include "charm-api.h"
 
-CDECL void RUN_Test(void);
-FDECL void FTN_NAME(RUN_TEST,run_test)(void);
+CLINKAGE void RUN_Test(void);
+FLINKAGE void FTN_NAME(RUN_TEST,run_test)(void);
 
-CDECL void RUN_Abort(int v);
-FDECL void FTN_NAME(RUN_ABORT,run_abort)(int *v);
+CLINKAGE void RUN_Abort(int v);
+FLINKAGE void FTN_NAME(RUN_ABORT,run_abort)(int *v);
 
index 567cd56c34598f369b83ca863a164d29b7188925..a8cfc17ace2fd9537f39864ce010f1aeab406072 100644 (file)
@@ -5,7 +5,7 @@
 #include "charm++.h" /* for CkPrintf */
 #include "charm-api.h" /* for FTN_NAME */
 
-FDECL void FTN_NAME(RUN_TEST,run_test)(void) {
+FLINKAGE void FTN_NAME(RUN_TEST,run_test)(void) {
        CkPrintf("   ftests_fallback.C: no fortran compiler\n");
 }
 
index 0a3b341547d9672c777775519f6ea7957e93982d..05f0556741d31d39cf13850ca26551829e910ef6 100644 (file)
@@ -6,11 +6,11 @@ Tester for FEM framework C/F90 routines.
 #include "tcharm.h"
 #include "ctests.h"
 
-CDECL void RUN_Abort(int v) {
+CLINKAGE void RUN_Abort(int v) {
        CkError("FEM Test failed: %d\n",v);
        CkAbort("FEM Test failed.\n");
 }
-FDECL void FTN_NAME(RUN_ABORT,run_abort)(int *v) {
+FLINKAGE void FTN_NAME(RUN_ABORT,run_abort)(int *v) {
        RUN_Abort(*v);
 }