⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cfortran.h

📁 A C++ class library for scientific computing
💻 H
📖 第 1 页 / 共 5 页
字号:
#ifdef CFSUBASFUN#define ZTRINGV_ARGS(I) ZTRINGV_ARGF(I)#else#define ZTRINGV_ARGS(I) _2(B,I)#endif#define    PBYTE_cfVP(A,B) PINT_cfVP(A,B)#define  PDOUBLE_cfVP(A,B)#define   PFLOAT_cfVP(A,B)#ifdef ZTRINGV_ARGS_allows_Pvariables/* This allows Pvariables for ARGS. ARGF machinery is above ARGFP. * B is not needed because the variable may be changed by the Fortran routine, * but because B is the only way to access an arbitrary macro argument.       */#define     PINT_cfVP(A,B) int  B = (int)A;              /* For ZSTRINGV_ARGS */#else#define     PINT_cfVP(A,B)#endif#define PLOGICAL_cfVP(A,B) int *B;      /* Returning LOGICAL in FUNn and SUBn */#define    PLONG_cfVP(A,B) PINT_cfVP(A,B)#define   PSHORT_cfVP(A,B) PINT_cfVP(A,B)#define        VCF_INT_S(T,A,B) _(T,VVVVVVV_cfTYPE) B = A;#define        VCF_INT_F(T,A,B) _(T,_cfVCF)(A,B)/* _cfVCF table is directly mapped to _cfCCC table. */#define     BYTE_cfVCF(A,B)#define   DOUBLE_cfVCF(A,B)#if !defined(__CF__KnR)#define    FLOAT_cfVCF(A,B)#else#define    FLOAT_cfVCF(A,B) float B = A;#endif#define      INT_cfVCF(A,B)#define  LOGICAL_cfVCF(A,B)#define     LONG_cfVCF(A,B)#define    SHORT_cfVCF(A,B)#define VCF(TN,I)       _Icf4(4,V,TN,_(A,I),_(B,I),F)#define VVCF(TN,AI,BI)  _Icf4(4,V,TN,AI,BI,S)#define        INT_cfV(T,A,B,F) _(VCF_INT_,F)(T,A,B)#define       INTV_cfV(T,A,B,F)#define      INTVV_cfV(T,A,B,F)#define     INTVVV_cfV(T,A,B,F)#define    INTVVVV_cfV(T,A,B,F)#define   INTVVVVV_cfV(T,A,B,F)#define  INTVVVVVV_cfV(T,A,B,F)#define INTVVVVVVV_cfV(T,A,B,F)#define PINT_cfV(      T,A,B,F) _(T,_cfVP)(A,B)#define PVOID_cfV(     T,A,B,F)#if defined(apolloFortran) || defined(hpuxFortran800) || defined(AbsoftUNIXFortran)#define    ROUTINE_cfV(T,A,B,F) void (*B)() = (void (*)())A;#else#define    ROUTINE_cfV(T,A,B,F)#endif#define     SIMPLE_cfV(T,A,B,F)#ifdef vmsFortran#define     STRING_cfV(T,A,B,F) static struct {fstring f; unsigned clen;} B =  \                                       {{0,DSC$K_DTYPE_T,DSC$K_CLASS_S,NULL},0};#define    PSTRING_cfV(T,A,B,F) static fstring B={0,DSC$K_DTYPE_T,DSC$K_CLASS_S,NULL};#define    STRINGV_cfV(T,A,B,F) static fstringvector B =                       \  {sizeof(A),DSC$K_DTYPE_T,DSC$K_CLASS_A,NULL,0,0,{0,0,1,1,1},1,0,NULL,0,{1,0}};#define   PSTRINGV_cfV(T,A,B,F) static fstringvector B =                       \          {0,DSC$K_DTYPE_T,DSC$K_CLASS_A,NULL,0,0,{0,0,1,1,1},1,0,NULL,0,{1,0}};#else#define     STRING_cfV(T,A,B,F) struct {unsigned short clen, flen;} B;#define    STRINGV_cfV(T,A,B,F) struct {char *s, *fs; unsigned flen;} B;#define    PSTRING_cfV(T,A,B,F) int     B;#define   PSTRINGV_cfV(T,A,B,F) struct{char *fs; unsigned short sizeofA,flen;}B;#endif#define    ZTRINGV_cfV(T,A,B,F)  STRINGV_cfV(T,A,B,F)#define   PZTRINGV_cfV(T,A,B,F) PSTRINGV_cfV(T,A,B,F)/* Note that the actions of the A table were performed inside the AA table.   VAX Ultrix vcc, and HP-UX cc, didn't evaluate arguments to functions left to   right, so we had to split the original table into the current robust two. */#define ACF(NAME,TN,AI,I)      _(TN,_cfSTR)(4,A,NAME,I,AI,_(B,I),0)#define   DEFAULT_cfA(M,I,A,B)#define   LOGICAL_cfA(M,I,A,B) B=C2FLOGICAL(B);#define  PLOGICAL_cfA(M,I,A,B) A=C2FLOGICAL(A);#define    STRING_cfA(M,I,A,B)  STRING_cfC(M,I,A,B,sizeof(A))#define   PSTRING_cfA(M,I,A,B) PSTRING_cfC(M,I,A,B,sizeof(A))#ifdef vmsFortran#define  AATRINGV_cfA(    A,B, sA,filA,silA)                                   \ initfstr(B,(char *)malloc((sA)-(filA)),(filA),(silA)-1),                      \          c2fstrv(A,B.dsc$a_pointer,(silA),(sA));#define APATRINGV_cfA(    A,B, sA,filA,silA)                                   \ initfstr(B,A,(filA),(silA)-1),c2fstrv(A,A,(silA),(sA));#else#define  AATRINGV_cfA(    A,B, sA,filA,silA)                                   \ (B.s=(char *)malloc((sA)-(filA)),B.fs=c2fstrv(A,B.s,(B.flen=(silA)-1)+1,(sA)));#define APATRINGV_cfA(    A,B, sA,filA,silA)                                   \ B.fs=c2fstrv(A,A,(B.flen=(silA)-1)+1,B.sizeofA=(sA));#endif#define   STRINGV_cfA(M,I,A,B)                                                 \         AATRINGV_cfA(A[0],B,sizeof(A),firstindexlength(A),secondindexlength(A))#define  PSTRINGV_cfA(M,I,A,B)                                                 \        APATRINGV_cfA(A[0],B,sizeof(A),firstindexlength(A),secondindexlength(A))#define   ZTRINGV_cfA(M,I,A,B) AATRINGV_cfA( A[0],B,                           \                    (_3(M,_ELEMS_,I))*(( _3(M,_ELEMLEN_,I))+1),                \                              (_3(M,_ELEMS_,I)),(_3(M,_ELEMLEN_,I))+1)#define  PZTRINGV_cfA(M,I,A,B) APATRINGV_cfA( A[0],B,                          \                    (_3(M,_ELEMS_,I))*(( _3(M,_ELEMLEN_,I))+1),                \                              (_3(M,_ELEMS_,I)),(_3(M,_ELEMLEN_,I))+1)#define    PBYTE_cfAAP(A,B) &A#define  PDOUBLE_cfAAP(A,B) &A#define   PFLOAT_cfAAP(A,B) FLOATVVVVVVV_cfPP &A#define     PINT_cfAAP(A,B) &A#define PLOGICAL_cfAAP(A,B) B= &A         /* B used to keep a common W table. */#define    PLONG_cfAAP(A,B) &A#define   PSHORT_cfAAP(A,B) &A#define AACF(TN,AI,I,C) _SEP_(TN,C,COMMA) _Icf(3,AA,TN,AI,_(B,I))#define        INT_cfAA(T,A,B) &B#define       INTV_cfAA(T,A,B) _(T,VVVVVV_cfPP) A#define      INTVV_cfAA(T,A,B) _(T,VVVVV_cfPP)  A[0]#define     INTVVV_cfAA(T,A,B) _(T,VVVV_cfPP)   A[0][0]#define    INTVVVV_cfAA(T,A,B) _(T,VVV_cfPP)    A[0][0][0]#define   INTVVVVV_cfAA(T,A,B) _(T,VV_cfPP)     A[0][0][0][0]#define  INTVVVVVV_cfAA(T,A,B) _(T,V_cfPP)      A[0][0][0][0][0]#define INTVVVVVVV_cfAA(T,A,B) _(T,_cfPP)       A[0][0][0][0][0][0]#define       PINT_cfAA(T,A,B) _(T,_cfAAP)(A,B)#define      PVOID_cfAA(T,A,B) (void *) A#if defined(apolloFortran) || defined(hpuxFortran800) || defined(AbsoftUNIXFortran)#define    ROUTINE_cfAA(T,A,B) &B#else#define    ROUTINE_cfAA(T,A,B) (void(*)())A#endif#define     STRING_cfAA(T,A,B)  STRING_cfCC(T,A,B)#define    PSTRING_cfAA(T,A,B) PSTRING_cfCC(T,A,B)#ifdef vmsFortran#define    STRINGV_cfAA(T,A,B) &B#else#ifdef CRAYFortran#define    STRINGV_cfAA(T,A,B) _cptofcd(B.fs,B.flen)#else#define    STRINGV_cfAA(T,A,B) B.fs#endif#endif#define   PSTRINGV_cfAA(T,A,B) STRINGV_cfAA(T,A,B)#define    ZTRINGV_cfAA(T,A,B) STRINGV_cfAA(T,A,B)#define   PZTRINGV_cfAA(T,A,B) STRINGV_cfAA(T,A,B)#if defined(vmsFortran) || defined(CRAYFortran)#define JCF(TN,I)#define KCF(TN,I)#else#define JCF(TN,I)    _(TN,_cfSTR)(1,J,_(B,I), 0,0,0,0)#if defined(AbsoftUNIXFortran)#define  DEFAULT_cfJ(B) ,0#else#define  DEFAULT_cfJ(B)#endif#define  LOGICAL_cfJ(B) DEFAULT_cfJ(B)#define PLOGICAL_cfJ(B) DEFAULT_cfJ(B)#define   STRING_cfJ(B) ,B.flen#define  PSTRING_cfJ(B) ,B#define  STRINGV_cfJ(B) STRING_cfJ(B)#define PSTRINGV_cfJ(B) STRING_cfJ(B)#define  ZTRINGV_cfJ(B) STRING_cfJ(B)#define PZTRINGV_cfJ(B) STRING_cfJ(B)/* KCF is identical to DCF, except that KCF ZTRING is not empty. */#define KCF(TN,I)    _(TN,_cfSTR)(1,KK,_(B,I), 0,0,0,0)#if defined(AbsoftUNIXFortran)#define  DEFAULT_cfKK(B) , unsigned B#else#define  DEFAULT_cfKK(B)#endif#define  LOGICAL_cfKK(B) DEFAULT_cfKK(B)#define PLOGICAL_cfKK(B) DEFAULT_cfKK(B)#define   STRING_cfKK(B) , unsigned B#define  PSTRING_cfKK(B) STRING_cfKK(B)#define  STRINGV_cfKK(B) STRING_cfKK(B)#define PSTRINGV_cfKK(B) STRING_cfKK(B)#define  ZTRINGV_cfKK(B) STRING_cfKK(B)#define PZTRINGV_cfKK(B) STRING_cfKK(B)#endif#define WCF(TN,AN,I)      _(TN,_cfSTR)(2,W,AN,_(B,I), 0,0,0)#define  DEFAULT_cfW(A,B)#define  LOGICAL_cfW(A,B)#define PLOGICAL_cfW(A,B) *B=F2CLOGICAL(*B);#define   STRING_cfW(A,B) (A[B.clen]!='\0'?A[B.clen]='\0':0); /* A?="constnt"*/#define  PSTRING_cfW(A,B) kill_trailing(A,' ');#ifdef vmsFortran#define  STRINGV_cfW(A,B) free(B.dsc$a_pointer);#define PSTRINGV_cfW(A,B)                                                      \  vkill_trailing(f2cstrv((char*)A, (char*)A,                                   \                           B.dsc$w_length+1, B.dsc$l_arsize+B.dsc$l_m[0]),     \                   B.dsc$w_length+1, B.dsc$l_arsize+B.dsc$l_m[0], ' ');#else#define  STRINGV_cfW(A,B) free(B.s);#define PSTRINGV_cfW(A,B) vkill_trailing(                                      \         f2cstrv((char*)A,(char*)A,B.flen+1,B.sizeofA), B.flen+1,B.sizeofA,' ');#endif#define  ZTRINGV_cfW(A,B)      STRINGV_cfW(A,B)#define PZTRINGV_cfW(A,B)     PSTRINGV_cfW(A,B)#define   NCF(TN,I,C)       _SEP_(TN,C,COMMA) _Icf(2,N,TN,_(A,I),0) #define  NNCF(TN,I,C)        UUCF(TN,I,C)#define NNNCF(TN,I,C)       _SEP_(TN,C,COLON) _Icf(2,N,TN,_(A,I),0) #define        INT_cfN(T,A) _(T,VVVVVVV_cfTYPE) * A#define       INTV_cfN(T,A) _(T,VVVVVV_cfTYPE)  * A#define      INTVV_cfN(T,A) _(T,VVVVV_cfTYPE)   * A#define     INTVVV_cfN(T,A) _(T,VVVV_cfTYPE)    * A#define    INTVVVV_cfN(T,A) _(T,VVV_cfTYPE)     * A#define   INTVVVVV_cfN(T,A) _(T,VV_cfTYPE)      * A#define  INTVVVVVV_cfN(T,A) _(T,V_cfTYPE)       * A#define INTVVVVVVV_cfN(T,A) _(T,_cfTYPE)        * A#define       PINT_cfN(T,A) _(T,_cfTYPE)        * A#define      PVOID_cfN(T,A) void *                A#if defined(apolloFortran) || defined(hpuxFortran800) || defined(AbsoftUNIXFortran)#define    ROUTINE_cfN(T,A) void (**A)()#else#define    ROUTINE_cfN(T,A) void ( *A)()#endif#ifdef vmsFortran#define     STRING_cfN(T,A) fstring *             A#define    STRINGV_cfN(T,A) fstringvector *       A#else#ifdef CRAYFortran#define     STRING_cfN(T,A) _fcd                  A#define    STRINGV_cfN(T,A) _fcd                  A#else#define     STRING_cfN(T,A) char *                A#define    STRINGV_cfN(T,A) char *                A#endif#endif#define    PSTRING_cfN(T,A)   STRING_cfN(T,A) /* CRAY insists on arg.'s here. */#define   PNSTRING_cfN(T,A)   STRING_cfN(T,A) /* CRAY insists on arg.'s here. */#define   PPSTRING_cfN(T,A)   STRING_cfN(T,A) /* CRAY insists on arg.'s here. */#define   PSTRINGV_cfN(T,A)  STRINGV_cfN(T,A)#define    ZTRINGV_cfN(T,A)  STRINGV_cfN(T,A)#define   PZTRINGV_cfN(T,A) PSTRINGV_cfN(T,A)/* Apollo 6.7, CRAY, old Sun, VAX/Ultrix vcc/cc and new ultrix   can't hack more than 31 arg's.   e.g. ultrix >= 4.3 gives message:       zow35> cc -c -DDECFortran cfortest.c       cfe: Fatal: Out of memory: cfortest.c       zow35>   Old __hpux had the problem, but new 'HP-UX A.09.03 A 9000/735' is fine   if using -Aa, otherwise we have a problem. */#ifndef MAX_PREPRO_ARGS#if !defined(__GNUC__) && (defined(VAXUltrix) || defined(__CF__APOLLO67) || (defined(sun)&&!defined(__sun)) || defined(_CRAY) || defined(__ultrix__) || (defined(__hpux)&&defined(__CF__KnR)))#define MAX_PREPRO_ARGS 31#else#define MAX_PREPRO_ARGS 99#endif#endif#if defined(AbsoftUNIXFortran)/* In addition to explicit Absoft stuff, only Absoft requires:   - DEFAULT coming from _cfSTR.     DEFAULT could have been called e.g. INT, but keep it for clarity.   - M term in CFARGT14 and CFARGT14FS. */#define ABSOFT_cf1(T0) _(T0,_cfSTR)(0,ABSOFT1,0,0,0,0,0)#define ABSOFT_cf2(T0) _(T0,_cfSTR)(0,ABSOFT2,0,0,0,0,0)#define ABSOFT_cf3(T0) _(T0,_cfSTR)(0,ABSOFT3,0,0,0,0,0)#define DEFAULT_cfABSOFT1#define LOGICAL_cfABSOFT1#define  STRING_cfABSOFT1 ,MAX_LEN_FORTRAN_FUNCTION_STRING#define DEFAULT_cfABSOFT2#define LOGICAL_cfABSOFT2#define  STRING_cfABSOFT2 ,unsigned D0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -