ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/setscan.c
Revision: 2.3
Committed: Fri Jun 27 11:32:12 2003 UTC (20 years, 10 months ago) by schorsch
Content type: text/plain
Branch: MAIN
Changes since 2.2: +6 -5 lines
Log Message:
Instrumented headers against multiple inclusion and for use from C++.
Continued ANSIfication.

File Contents

# User Rev Content
1 greg 1.3 #ifndef lint
2 schorsch 2.3 static const char RCSid[] = "$Id: setscan.c,v 2.2 2003/02/22 02:07:30 greg Exp $";
3 greg 1.3 #endif
4     /*
5     * Convert angle ranges of the form a-b:s,c to discrete values
6     */
7 greg 1.1
8     #include <ctype.h>
9    
10 greg 1.3 #include "setscan.h"
11    
12 schorsch 2.3 int
13     setscan( /* set up scan according to arg */
14     register ANGLE *ang,
15     register char *arg
16     )
17 greg 1.1 {
18     int state = ',';
19     int start, finish, step;
20    
21     while (state) {
22     switch (state) {
23     case ',':
24     start = atoi(arg);
25     finish = start;
26     step = 1;
27     break;
28     case '-':
29     finish = atoi(arg);
30     if (finish < start)
31     return(-1);
32     break;
33     case ':':
34     step = atoi(arg);
35     break;
36     default:
37     return(-1);
38     }
39 greg 1.2 if (!isdigit(*arg))
40 greg 1.1 return(-1);
41     do
42     arg++;
43     while (isdigit(*arg));
44     state = *arg++;
45     if (!state || state == ',')
46     while (start <= finish) {
47     *ang++ = start;
48     start += step;
49     }
50     }
51     *ang = AEND;
52     return(0);
53     }