Doxygen Source Code Documentation
fmt.c File Reference
#include "f2c.h"
#include "fio.h"
#include "fmt.h"
Go to the source code of this file.
Defines | |
#define | skip(s) while(*s==' ') s++ |
#define | SYLMX 300 |
#define | GLITCH '\2' |
#define | STKSZ 10 |
Functions | |
char * | ap_end (char *s) |
op_gen (int a, int b, int c, int d) | |
char * | f_list (char *) |
char * | gt_num (char *s, int *n) |
char * | f_s (char *s, int curloc) |
ne_d (char *s, char **p) | |
e_d (char *s, char **p) | |
char * | i_tem (char *s) |
pars_f (char *s) | |
type_f (int n) | |
integer | do_fio (ftnint *number, char *ptr, ftnlen len) |
en_fio (Void) | |
VOID | fmt_bg (Void) |
Variables | |
int | f__cursor |
int | f__scale |
flag | f__cblank |
flag | f__cplus |
syl | f__syl [SYLMX] |
int | f__parenlvl |
int | f__pc |
int | f__revloc |
int | f__cnt [STKSZ] |
int | f__ret [STKSZ] |
int | f__cp |
int | f__rp |
flag | f__workdone |
flag | f__nonl |
Define Documentation
|
Definition at line 17 of file fmt.c. Referenced by ne_d(). |
|
Definition at line 4 of file fmt.c. Referenced by e_d(), f_list(), f_s(), ge_header(), main(), memplot_to_postscript(), memplot_to_RGB_sef(), memplot_to_X11_sef(), mpeg2_skip(), mri_read(), mri_try_7D(), mri_try_mri(), mri_try_pgm(), nextdata(), processEvents(), qh_matchduplicates(), qh_matchneighbor(), qh_setequal_except(), read_ge_header(), read_ge_image(), and T3D_check_outliers(). |
|
|
|
|
Function Documentation
|
Definition at line 27 of file fmt.c. References f__fatal(). Referenced by ne_d().
00029 { char quote; 00030 quote= *s++; 00031 for(;*s;s++) 00032 { if(*s!=quote) continue; 00033 if(*++s!=quote) return(s); 00034 } 00035 if(f__elist->cierr) { 00036 errno = 100; 00037 return(NULL); 00038 } 00039 f__fatal(100, "bad string"); 00040 /*NOTREACHED*/ return 0; 00041 } |
|
Definition at line 387 of file fmt.c. References BN, BZ, COLON, err, errfl, f__cblank, f__cnt, f__cp, f__cplus, f__nonl, f__pc, f__ret, f__rp, f__scale, f__workdone, GOTO, i, NED, NONL, syl::op, syl::p1, RET1, REVERT, S, SP, STACK, and type_f(). Referenced by en_fio(), ff_(), get_token__(), MAIN__(), parser_(), set_(), zzaxxx_(), zzaxyy_(), and zzlabl_().
00389 { struct syl *p; 00390 int n,i; 00391 for(i=0;i<*number;i++,ptr+=len) 00392 { 00393 loop: switch(type_f((p= &f__syl[f__pc])->op)) 00394 { 00395 default: 00396 fprintf(stderr,"unknown code in do_fio: %d\n%s\n", 00397 p->op,f__fmtbuf); 00398 err(f__elist->cierr,100,"do_fio"); 00399 case NED: 00400 if((*f__doned)(p)) 00401 { f__pc++; 00402 goto loop; 00403 } 00404 f__pc++; 00405 continue; 00406 case ED: 00407 if(f__cnt[f__cp]<=0) 00408 { f__cp--; 00409 f__pc++; 00410 goto loop; 00411 } 00412 if(ptr==NULL) 00413 return((*f__doend)()); 00414 f__cnt[f__cp]--; 00415 f__workdone=1; 00416 if((n=(*f__doed)(p,ptr,len))>0) 00417 errfl(f__elist->cierr,errno,"fmt"); 00418 if(n<0) 00419 err(f__elist->ciend,(EOF),"fmt"); 00420 continue; 00421 case STACK: 00422 f__cnt[++f__cp]=p->p1; 00423 f__pc++; 00424 goto loop; 00425 case RET1: 00426 f__ret[++f__rp]=p->p1; 00427 f__pc++; 00428 goto loop; 00429 case GOTO: 00430 if(--f__cnt[f__cp]<=0) 00431 { f__cp--; 00432 f__rp--; 00433 f__pc++; 00434 goto loop; 00435 } 00436 f__pc=1+f__ret[f__rp--]; 00437 goto loop; 00438 case REVERT: 00439 f__rp=f__cp=0; 00440 f__pc = p->p1; 00441 if(ptr==NULL) 00442 return((*f__doend)()); 00443 if(!f__workdone) return(0); 00444 if((n=(*f__dorevert)()) != 0) return(n); 00445 goto loop; 00446 case COLON: 00447 if(ptr==NULL) 00448 return((*f__doend)()); 00449 f__pc++; 00450 goto loop; 00451 case NONL: 00452 f__nonl = 1; 00453 f__pc++; 00454 goto loop; 00455 case S: 00456 case SS: 00457 f__cplus=0; 00458 f__pc++; 00459 goto loop; 00460 case SP: 00461 f__cplus = 1; 00462 f__pc++; 00463 goto loop; 00464 case P: f__scale=p->p1; 00465 f__pc++; 00466 goto loop; 00467 case BN: 00468 f__cblank=0; 00469 f__pc++; 00470 goto loop; 00471 case BZ: 00472 f__cblank=1; 00473 f__pc++; 00474 goto loop; 00475 } 00476 } 00477 return(0); 00478 } |
|
Definition at line 190 of file fmt.c. References AW, f__pc, gt_num(), i, IM, L, O, OM, op_gen(), p, skip, STACK, and ZM. Referenced by i_tem().
00192 { int i,im,n,w,d,e,found=0,x=0; 00193 char *sv=s; 00194 s=gt_num(s,&n); 00195 (void) op_gen(STACK,n,0,0); 00196 switch(*s++) 00197 { 00198 default: break; 00199 case 'E': 00200 case 'e': x=1; 00201 case 'G': 00202 case 'g': 00203 found=1; 00204 s=gt_num(s,&w); 00205 if(w==0) break; 00206 if(*s=='.') 00207 { s++; 00208 s=gt_num(s,&d); 00209 } 00210 else d=0; 00211 if(*s!='E' && *s != 'e') 00212 (void) op_gen(x==1?E:G,w,d,0); /* default is Ew.dE2 */ 00213 else 00214 { s++; 00215 s=gt_num(s,&e); 00216 (void) op_gen(x==1?EE:GE,w,d,e); 00217 } 00218 break; 00219 case 'O': 00220 case 'o': 00221 i = O; 00222 im = OM; 00223 goto finish_I; 00224 case 'Z': 00225 case 'z': 00226 i = Z; 00227 im = ZM; 00228 goto finish_I; 00229 case 'L': 00230 case 'l': 00231 found=1; 00232 s=gt_num(s,&w); 00233 if(w==0) break; 00234 (void) op_gen(L,w,0,0); 00235 break; 00236 case 'A': 00237 case 'a': 00238 found=1; 00239 skip(s); 00240 if(*s>='0' && *s<='9') 00241 { s=gt_num(s,&w); 00242 if(w==0) break; 00243 (void) op_gen(AW,w,0,0); 00244 break; 00245 } 00246 (void) op_gen(A,0,0,0); 00247 break; 00248 case 'F': 00249 case 'f': 00250 found=1; 00251 s=gt_num(s,&w); 00252 if(w==0) break; 00253 if(*s=='.') 00254 { s++; 00255 s=gt_num(s,&d); 00256 } 00257 else d=0; 00258 (void) op_gen(F,w,d,0); 00259 break; 00260 case 'D': 00261 case 'd': 00262 found=1; 00263 s=gt_num(s,&w); 00264 if(w==0) break; 00265 if(*s=='.') 00266 { s++; 00267 s=gt_num(s,&d); 00268 } 00269 else d=0; 00270 (void) op_gen(D,w,d,0); 00271 break; 00272 case 'I': 00273 case 'i': 00274 i = I; 00275 im = IM; 00276 finish_I: 00277 found=1; 00278 s=gt_num(s,&w); 00279 if(w==0) break; 00280 if(*s!='.') 00281 { (void) op_gen(i,w,0,0); 00282 break; 00283 } 00284 s++; 00285 s=gt_num(s,&d); 00286 (void) op_gen(im,w,d,0); 00287 break; 00288 } 00289 if(found==0) 00290 { f__pc--; /*unSTACK*/ 00291 *p=sv; 00292 return(0); 00293 } 00294 *p=s; 00295 return(1); 00296 } |
|
Definition at line 479 of file fmt.c. References do_fio().
00480 { ftnint one=1; 00481 return(do_fio(&one,(char *)NULL,(ftnint)0)); 00482 } |
|
Definition at line 314 of file fmt.c. References f__parenlvl, f__revloc, GOTO, i_tem(), op_gen(), REVERT, and skip. Referenced by f_s().
00316 { 00317 for(;*s!=0;) 00318 { skip(s); 00319 if((s=i_tem(s))==NULL) return(NULL); 00320 skip(s); 00321 if(*s==',') s++; 00322 else if(*s==')') 00323 { if(--f__parenlvl==0) 00324 { 00325 (void) op_gen(REVERT,f__revloc,0,0); 00326 return(++s); 00327 } 00328 (void) op_gen(GOTO,0,0,0); 00329 return(++s); 00330 } 00331 } 00332 return(NULL); 00333 } |
|
Definition at line 84 of file fmt.c. References f__parenlvl, f__revloc, f_list(), op_gen(), RET1, and skip. Referenced by i_tem(), and pars_f().
|
|
Definition at line 484 of file fmt.c. References f__cnt, f__cp, f__cursor, f__pc, f__ret, f__rp, and f__workdone.
|
|
Definition at line 63 of file fmt.c. Referenced by e_d(), i_tem(), and ne_d().
|
|
Definition at line 300 of file fmt.c. References e_d(), f_s(), gt_num(), ne_d(), op_gen(), and STACK. Referenced by f_list().
|
|
Definition at line 104 of file fmt.c. References ap_end(), APOS, BN, BZ, COLON, GLITCH, gt_num(), NONL, op_gen(), p, syl::p2, S, SLASH, SP, TL, and TR. Referenced by i_tem().
00106 { int n,x,sign=0; 00107 struct syl *sp; 00108 switch(*s) 00109 { 00110 default: 00111 return(0); 00112 case ':': (void) op_gen(COLON,0,0,0); break; 00113 case '$': 00114 (void) op_gen(NONL, 0, 0, 0); break; 00115 case 'B': 00116 case 'b': 00117 if(*++s=='z' || *s == 'Z') (void) op_gen(BZ,0,0,0); 00118 else (void) op_gen(BN,0,0,0); 00119 break; 00120 case 'S': 00121 case 's': 00122 if(*(s+1)=='s' || *(s+1) == 'S') 00123 { x=SS; 00124 s++; 00125 } 00126 else if(*(s+1)=='p' || *(s+1) == 'P') 00127 { x=SP; 00128 s++; 00129 } 00130 else x=S; 00131 (void) op_gen(x,0,0,0); 00132 break; 00133 case '/': (void) op_gen(SLASH,0,0,0); break; 00134 case '-': sign=1; 00135 case '+': s++; /*OUTRAGEOUS CODING TRICK*/ 00136 case '0': case '1': case '2': case '3': case '4': 00137 case '5': case '6': case '7': case '8': case '9': 00138 s=gt_num(s,&n); 00139 switch(*s) 00140 { 00141 default: 00142 return(0); 00143 case 'P': 00144 case 'p': if(sign) n= -n; (void) op_gen(P,n,0,0); break; 00145 case 'X': 00146 case 'x': (void) op_gen(X,n,0,0); break; 00147 case 'H': 00148 case 'h': 00149 sp = &f__syl[op_gen(H,n,0,0)]; 00150 *(char **)&sp->p2 = s + 1; 00151 s+=n; 00152 break; 00153 } 00154 break; 00155 case GLITCH: 00156 case '"': 00157 case '\'': 00158 sp = &f__syl[op_gen(APOS,0,0,0)]; 00159 *(char **)&sp->p2 = s; 00160 if((*p = ap_end(s)) == NULL) 00161 return(0); 00162 return(1); 00163 case 'T': 00164 case 't': 00165 if(*(s+1)=='l' || *(s+1) == 'L') 00166 { x=TL; 00167 s++; 00168 } 00169 else if(*(s+1)=='r'|| *(s+1) == 'R') 00170 { x=TR; 00171 s++; 00172 } 00173 else x=T; 00174 s=gt_num(s+1,&n); 00175 s--; 00176 (void) op_gen(x,n,0,0); 00177 break; 00178 case 'X': 00179 case 'x': (void) op_gen(X,1,0,0); break; 00180 case 'P': 00181 case 'p': (void) op_gen(P,1,0,0); break; 00182 } 00183 s++; 00184 *p=s; 00185 return(1); 00186 } |
|
Definition at line 45 of file fmt.c. References a, c, f__pc, syl::op, syl::p1, syl::p2, syl::p3, and sig_die(). Referenced by e_d(), f_list(), f_s(), i_tem(), and ne_d().
|
|
Definition at line 338 of file fmt.c. References f__parenlvl, f__pc, f__revloc, and f_s(). Referenced by c_si(), s_rdfe(), s_rsfe(), s_wdfe(), and s_wsfe().
00340 { 00341 f__parenlvl=f__revloc=f__pc=0; 00342 if(f_s(s,0) == NULL) 00343 { 00344 return(-1); 00345 } 00346 return(0); 00347 } |
|
Definition at line 355 of file fmt.c. References APOS, AW, E, EE, GE, GOTO, IM, L, O, OM, RET1, REVERT, SLASH, STACK, TL, TR, and ZM. Referenced by do_fio().
00357 { 00358 switch(n) 00359 { 00360 default: 00361 return(n); 00362 case RET1: 00363 return(RET1); 00364 case REVERT: return(REVERT); 00365 case GOTO: return(GOTO); 00366 case STACK: return(STACK); 00367 case X: 00368 case SLASH: 00369 case APOS: case H: 00370 case T: case TL: case TR: 00371 return(NED); 00372 case F: 00373 case I: 00374 case IM: 00375 case A: case AW: 00376 case O: case OM: 00377 case L: 00378 case E: case EE: case D: 00379 case G: case GE: 00380 case Z: case ZM: 00381 return(ED); 00382 } 00383 } |
Variable Documentation
|
Definition at line 20 of file fmt.c. Referenced by do_fio(). |
|
|
|
|
|
Definition at line 20 of file fmt.c. Referenced by do_fio(). |
|
Definition at line 19 of file fmt.c. Referenced by fmt_bg(). |
|
Definition at line 350 of file fmt.c. Referenced by do_fio(). |
|
|
|
Definition at line 22 of file fmt.c. Referenced by do_fio(), e_d(), fmt_bg(), op_gen(), and pars_f(). |
|
|
|
|
|
|
|
Definition at line 19 of file fmt.c. Referenced by do_fio(). |
|
|
|
|