ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/readfargs.c
Revision: 2.3
Committed: Tue May 18 09:26:05 1993 UTC (30 years, 11 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 2.2: +14 -16 lines
Log Message:
prettied up macros a bit

File Contents

# User Rev Content
1 greg 1.1 /* Copyright (c) 1991 Regents of the University of California */
2    
3     #ifndef lint
4     static char SCCSid[] = "$SunId$ LBL";
5     #endif
6    
7     /*
8     * Allocate, read and free object arguments
9     */
10    
11     #include <stdio.h>
12    
13 greg 1.3 #include "fvect.h"
14    
15 greg 1.1 #include "object.h"
16    
17    
18 greg 2.3 #ifndef MEMHOG
19     #define bmalloc malloc
20     #endif
21    
22     extern char *bmalloc(), *savestr(), *fgetword();
23 greg 2.2 #ifndef atof
24 greg 1.2 extern double atof();
25 greg 2.2 #endif
26 greg 1.2 extern int atoi();
27     extern long atol();
28 greg 1.1
29    
30     readfargs(fa, fp) /* read function arguments from stream */
31     register FUNARGS *fa;
32     FILE *fp;
33     {
34 greg 2.3 #define getstr(s) (fgetword(s,sizeof(s),fp)!=NULL)
35     #define getint(s) (getstr(s) && isint(s))
36     #define getflt(s) (getstr(s) && isflt(s))
37 greg 1.1 char sbuf[MAXSTR];
38 greg 1.2 register int n, i;
39 greg 1.1
40 greg 2.3 if (!getint(sbuf) || (n = atoi(sbuf)) < 0)
41 greg 1.1 return(0);
42     if (fa->nsargs = n) {
43     fa->sarg = (char **)bmalloc(n*sizeof(char *));
44     if (fa->sarg == NULL)
45     return(-1);
46     for (i = 0; i < fa->nsargs; i++) {
47 greg 2.3 if (!getstr(sbuf))
48 greg 1.1 return(0);
49     fa->sarg[i] = savestr(sbuf);
50     }
51     } else
52     fa->sarg = NULL;
53 greg 2.3 if (!getint(sbuf) || (n = atoi(sbuf)) < 0)
54 greg 1.1 return(0);
55     #ifdef IARGS
56     if (fa->niargs = n) {
57     fa->iarg = (long *)bmalloc(n*sizeof(long));
58     if (fa->iarg == NULL)
59     return(-1);
60 greg 1.2 for (i = 0; i < n; i++) {
61 greg 2.3 if (!getint(sbuf))
62 greg 1.1 return(0);
63 greg 1.2 fa->iarg[i] = atol(sbuf);
64     }
65 greg 1.1 } else
66     fa->iarg = NULL;
67     #else
68     if (n != 0)
69     return(0);
70     #endif
71 greg 2.3 if (!getint(sbuf) || (n = atoi(sbuf)) < 0)
72 greg 1.1 return(0);
73     if (fa->nfargs = n) {
74 greg 1.3 fa->farg = (FLOAT *)bmalloc(n*sizeof(FLOAT));
75 greg 1.1 if (fa->farg == NULL)
76     return(-1);
77 greg 1.2 for (i = 0; i < n; i++) {
78 greg 2.3 if (!getflt(sbuf))
79 greg 1.1 return(0);
80 greg 1.2 fa->farg[i] = atof(sbuf);
81     }
82 greg 1.1 } else
83     fa->farg = NULL;
84     return(1);
85 greg 1.2 #undef getflt
86     #undef getint
87     #undef getstr
88 greg 1.1 }
89    
90    
91     #ifndef MEMHOG
92 greg 1.2 freefargs(fa) /* free object arguments */
93 greg 1.1 register FUNARGS *fa;
94     {
95     register int i;
96    
97     if (fa->nsargs) {
98     for (i = 0; i < fa->nsargs; i++)
99     freestr(fa->sarg[i]);
100     free((char *)fa->sarg);
101     }
102     #ifdef IARGS
103     if (fa->niargs)
104     free((char *)fa->iarg);
105     #endif
106     if (fa->nfargs)
107     free((char *)fa->farg);
108     }
109     #endif