1 /** 2 * Copyright 1981-2016 ECMWF. 3 * 4 * This software is licensed under the terms of the Apache Licence 5 * Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 6 * 7 * In applying this licence, ECMWF does not waive the privileges and immunities 8 * granted to it by virtue of its status as an intergovernmental organisation 9 * nor does it submit to any jurisdiction. 10 */ 11 #ifndef PBG_ROUTINES_H 12 #define PBG_ROUTINES_H 13 14 #include <stdio.h> 15 #include <sys/types.h> 16 17 #ifdef FOPEN64 18 extern FILE *fopen64(const char *,const char *); 19 #define OFF_T off64_t 20 extern OFF_T ftello64(FILE *); 21 #else 22 #define OFF_T off_t 23 #endif 24 25 #define _fcd char * 26 #define fortint int 27 #define integer int 28 #define bool int 29 30 #define MAX_NUMBER_OF_GRIBS 100 31 32 typedef struct gribfile { 33 34 FILE * fp; 35 _fcd fname; 36 char readwriteflag; 37 integer max; 38 integer count; 39 OFF_T * offset; 40 integer * length; 41 integer * parameter; 42 integer * level; 43 integer * date; 44 integer * time; 45 integer * timestep; 46 integer * localDefinitionNumber; 47 integer * type; 48 integer * stream; 49 integer * repres; 50 integer * levtype; 51 integer * number; 52 integer * vdate; 53 integer * vtime; 54 integer * tcNumber; 55 integer * tcTotal; 56 integer * clusterMethod; 57 integer * tcStep; 58 integer * clusterStepEnd; 59 integer * tcNorth; 60 integer * tcWest; 61 integer * tcSouth; 62 integer * tcEast; 63 integer * clusterOpFcNumber; 64 integer * clusterControlFcNumber; 65 integer * tcNumOfFcs; 66 integer * probScale; 67 integer * probIndicator; 68 integer * probLower; 69 integer * probUpper; 70 integer * ni; 71 integer * nj; 72 integer * nlat; 73 integer * nlon; 74 integer * slat; 75 integer * slon; 76 integer * di; 77 integer * dj; 78 integer * splat; 79 integer * splon; 80 integer * quasi; 81 integer * directionNumber; 82 integer * frequencyNumber; 83 integer * optimisationTime; 84 integer * leadTime; 85 integer * sensitiveAreaDomain; 86 integer * sensitiveAreaMethod; 87 integer * verifyingMonth; 88 integer * averagingPeriod; 89 integer * forecastMonth; 90 integer * referenceDate; 91 integer * climateDateFrom; 92 integer * climateDateTo; 93 integer * thresholdUnitsScale; 94 integer * thresholdIndicator; 95 integer * lowerThreshold; 96 integer * upperThreshold; 97 98 struct gribfile *next; 99 100 }gribfile; 101 102 typedef struct collection { 103 104 integer (* exists)(_fcd , fortint); 105 integer (* addRead)(_fcd , fortint); 106 integer (* addWrite)(_fcd , fortint); 107 void (* removeFile)(_fcd , fortint); 108 109 integer count; 110 integer max; 111 struct gribfile * files; 112 113 }collection; 114 115 116 /* 117 // Prototypes 118 */ 119 120 #ifdef __cplusplus 121 extern "C" { 122 #endif 123 124 fortint pbgtotl(_fcd filename, fortint filename_len); 125 fortint pbgtotl_(_fcd filename, fortint filename_len); 126 fortint pbgleng(_fcd filename, fortint * n, fortint filename_len); 127 fortint pbgleng_(_fcd filename, fortint * n, fortint filename_len); 128 fortint pbgoffs(_fcd filename, fortint * n, fortint filename_len); 129 fortint pbgoffs_(_fcd filename, fortint * n, fortint filename_len); 130 fortint pbgparm(_fcd filename, fortint * n, fortint filename_len); 131 fortint pbgparm_(_fcd filename, fortint * n, fortint filename_len); 132 fortint pbglevl(_fcd filename, fortint * n, fortint filename_len); 133 fortint pbglevl_(_fcd filename, fortint * n, fortint filename_len); 134 fortint pbgdate(_fcd filename, fortint * n, fortint filename_len); 135 fortint pbgdate_(_fcd filename, fortint * n, fortint filename_len); 136 fortint pbgtime(_fcd filename, fortint * n, fortint filename_len); 137 fortint pbgtime_(_fcd filename, fortint * n, fortint filename_len); 138 fortint pbgstep(_fcd filename, fortint * n, fortint filename_len); 139 fortint pbgstep_(_fcd filename, fortint * n, fortint filename_len); 140 fortint pbgtype(_fcd filename, fortint * n, fortint filename_len); 141 fortint pbgtype_(_fcd filename, fortint * n, fortint filename_len); 142 fortint pbgstrm(_fcd filename, fortint * n, fortint filename_len); 143 fortint pbgstrm_(_fcd filename, fortint * n, fortint filename_len); 144 fortint pbgrepr(_fcd filename, fortint * n, fortint filename_len); 145 fortint pbgrepr_(_fcd filename, fortint * n, fortint filename_len); 146 fortint pbglevt(_fcd filename, fortint * n, fortint filename_len); 147 fortint pbglevt_(_fcd filename, fortint * n, fortint filename_len); 148 fortint pbgfind(_fcd filename, 149 fortint * param, fortint * level, fortint * date, 150 fortint * time, fortint * step, fortint * n, 151 fortint filename_len); 152 fortint pbgfind_(_fcd filename, 153 fortint * param, fortint * level, fortint * date, 154 fortint * time, fortint * step, fortint * n, 155 fortint filename_len); 156 fortint pbgafind(_fcd filename, fortint * list, fortint * n, 157 fortint filename_len); 158 fortint pbgafind_(_fcd filename, fortint * list, fortint * n, 159 fortint filename_len); 160 fortint pbgbfind(_fcd filename, fortint * list, fortint * n, 161 fortint filename_len); 162 fortint pbgbfind_(_fcd filename, fortint * list, fortint * n, 163 fortint filename_len); 164 fortint pbgvfind(_fcd filename, 165 fortint * param, fortint * level, fortint * vdate, 166 fortint * vtime, fortint * status, fortint * n, 167 fortint filename_len); 168 fortint pbgvfind_(_fcd filename, 169 fortint * param, fortint * level, fortint * vdate, 170 fortint * vtime, fortint * status, fortint * n, 171 fortint filename_len); 172 fortint pbgxfind_(fortint * grib1, _fcd filename, fortint filename_len); 173 fortint pbgxfind(fortint * grib1, _fcd filename, fortint filename_len); 174 175 fortint pbgget(_fcd filename, fortint * buffer, fortint * bufflen, 176 fortint * n, fortint filename_len); 177 fortint pbgget_(_fcd filename, fortint * buffer, fortint * bufflen, 178 fortint * n, fortint filename_len); 179 180 fortint pbgput(_fcd filename, fortint * buffer, fortint * bufflen, 181 fortint filename_len); 182 fortint pbgput_(_fcd filename, fortint * buffer, fortint * bufflen, 183 fortint filename_len); 184 185 void pbgclos(_fcd filename, fortint filename_len); 186 void pbgclos_(_fcd filename, fortint filename_len); 187 188 #ifdef __cplusplus 189 } 190 #endif 191 192 #endif /* end of PBG_ROUTINES_H */ 193