home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / g77-0.5.15-src.tgz / tar.out / fsf / g77 / f / intrin.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  4KB  |  113 lines

  1. /* intrin.h -- Public interface for intrin.c
  2.    Copyright (C) 1995 Free Software Foundation, Inc.
  3.    Contributed by James Craig Burley (burley@gnu.ai.mit.edu).
  4.  
  5. This file is part of GNU Fortran.
  6.  
  7. GNU Fortran is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2, or (at your option)
  10. any later version.
  11.  
  12. GNU Fortran is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with GNU Fortran; see the file COPYING.  If not, write to
  19. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  20.  
  21. */
  22.  
  23. #ifndef _H_f_intrin
  24. #define _H_f_intrin
  25.  
  26. typedef enum
  27.   {
  28.     FFEINTRIN_familyNONE,    /* Not in any family. */
  29.     FFEINTRIN_familyF77,    /* ANSI FORTRAN 77. */
  30.     FFEINTRIN_familyASC,    /* ASCII-related (ACHAR, IACHAR). */
  31.     FFEINTRIN_familyMIL,    /* MIL STD 1753 (MVBITS, etc). */
  32.     FFEINTRIN_familyDCP,    /* Unnamed DOUBLE COMPLEX intrinsics. */
  33.     FFEINTRIN_familyF90,    /* Fortran 90. */
  34.     FFEINTRIN_familyVXT,    /* VAX/VMS FORTRAN. */
  35.     FFEINTRIN_familyFVZ,    /* f2c, VAX/VMS DOUBLE COMPLEX intrinsics. */
  36.     FFEINTRIN_familyF2C,    /* f2c intrinsics. */
  37.     FFEINTRIN_familyF2Z,    /* f2c DOUBLE COMPLEX intrinsics. */
  38.     FFEINTRIN_family,
  39.   } ffeintrinFamily;
  40.  
  41. typedef enum
  42.   {
  43. #define DEFGEN(CODE,NAME,SPEC1,SPEC2,SPEC3,SPEC4,SPEC5,SPEC6, \
  44.   SPEC7,SPEC8,SPEC9,SPEC10,SPEC11,SPEC12,SPEC13,SPEC14) CODE,
  45. #define DEFIMP(CODE,NAME,GFRT,RETURNS,EXPECTS)
  46. #define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP)
  47. #include "intrin.def"
  48. #undef DEFGEN
  49. #undef DEFIMP
  50. #undef DEFSPEC
  51.     FFEINTRIN_gen
  52.   } ffeintrinGen;
  53.  
  54. typedef enum
  55.   {
  56. #define DEFGEN(CODE,NAME,SPEC1,SPEC2,SPEC3,SPEC4,SPEC5,SPEC6, \
  57.   SPEC7,SPEC8,SPEC9,SPEC10,SPEC11,SPEC12,SPEC13,SPEC14)
  58. #define DEFIMP(CODE,NAME,GFRT,RETURNS,EXPECTS)
  59. #define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP) CODE,
  60. #include "intrin.def"
  61. #undef DEFGEN
  62. #undef DEFIMP
  63. #undef DEFSPEC
  64.     FFEINTRIN_spec
  65.   } ffeintrinSpec;
  66.  
  67. typedef enum
  68.   {
  69. #define DEFGEN(CODE,NAME,SPEC1,SPEC2,SPEC3,SPEC4,SPEC5,SPEC6, \
  70.   SPEC7,SPEC8,SPEC9,SPEC10,SPEC11,SPEC12,SPEC13,SPEC14)
  71. #define DEFIMP(CODE,NAME,GFRT,RETURNS,EXPECTS) CODE,
  72. #define DEFSPEC(CODE,NAME,CALLABLE,FAMILY,IMP)
  73. #include "intrin.def"
  74. #undef DEFGEN
  75. #undef DEFIMP
  76. #undef DEFSPEC
  77.     FFEINTRIN_imp
  78.   } ffeintrinImp;
  79.  
  80. #include "bld.h"
  81. #include "info.h"
  82.  
  83. ffeinfoBasictype ffeintrin_basictype (ffeintrinImp imp);
  84. ffeintrinFamily ffeintrin_family (ffeintrinSpec spec);
  85. void ffeintrin_fulfill_generic (ffebld *expr, ffeinfo *info, ffelexToken t);
  86. void ffeintrin_fulfill_specific (ffebld *expr, ffeinfo *info, ffelexToken t);
  87. #if FFECOM_targetCURRENT == FFECOM_targetGCC
  88. ffecomGfrt ffeintrin_gfrt (ffeintrinImp imp);
  89. #endif
  90. void ffeintrin_init_0 (void);
  91. #define ffeintrin_init_1()
  92. #define ffeintrin_init_2()
  93. #define ffeintrin_init_3()
  94. #define ffeintrin_init_4()
  95. bool ffeintrin_is_actualarg (ffeintrinSpec spec);
  96. bool ffeintrin_is_intrinsic (char *name, ffelexToken t, bool explicit,
  97.                  ffeintrinGen *gen, ffeintrinSpec *spec,
  98.                  ffeintrinImp *imp, ffeinfoKind *kind);
  99. ffeinfoKindtype ffeintrin_kindtype (ffeintrinImp imp);
  100. char *ffeintrin_name_generic (ffeintrinGen gen);
  101. char *ffeintrin_name_implementation (ffeintrinImp imp);
  102. char *ffeintrin_name_specific (ffeintrinSpec spec);
  103. ffeIntrinsicState ffeintrin_state_family (ffeintrinFamily family);
  104. #define ffeintrin_terminate_0()
  105. #define ffeintrin_terminate_1()
  106. #define ffeintrin_terminate_2()
  107. #define ffeintrin_terminate_3()
  108. #define ffeintrin_terminate_4()
  109.  
  110. /* End of #include file. */
  111.  
  112. #endif
  113.