ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cv/mgflib/parser.h
(Generate patch)

Comparing ray/src/cv/mgflib/parser.h (file contents):
Revision 1.21 by greg, Tue May 9 11:47:27 1995 UTC vs.
Revision 1.25 by greg, Thu May 11 21:48:42 1995 UTC

# Line 8 | Line 8
8  
9   /* must include stdio.h before us */
10  
11 <                        /* Entities (order doesn't really matter) */
11 > #define MG_VMAJOR       1               /* major version number */
12 > #define MG_VMINOR       0               /* minor version number */
13 >
14 >                        /* Entities (list is only appended, never modified) */
15   #define MG_E_COMMENT    0               /* #            */
16   #define MG_E_COLOR      1               /* c            */
17   #define MG_E_CCT        2               /* cct          */
# Line 37 | Line 40
40   #define MG_E_TS         25              /* ts           */
41   #define MG_E_VERTEX     26              /* v            */
42   #define MG_E_XF         27              /* xf           */
43 +                        /* end of Version 1 entities */
44  
45   #define MG_NENTITIES    28              /* total # entities */
46  
47 + #define MG_NELIST       {28}            /* entity count for version 1 and up */
48 +
49   #define MG_NAMELIST     {"#","c","cct","cone","cmix","cspec","cxy","cyl","ed",\
50                          "f","i","ies","ir","m","n","o","p","prism","rd",\
51                          "ring","rs","sides","sph","td","torus","ts","v","xf"}
# Line 48 | Line 54
54  
55   extern char     mg_ename[MG_NENTITIES][MG_MAXELEN];
56  
57 <                        /* Handler routines for each entity */
52 <
57 >                        /* Handler routines for each entity and unknown ones */
58   #ifdef NOPROTO
59   extern int      (*mg_ehand[MG_NENTITIES])();
60 + extern int      (*mg_uhand)();
61 + extern int      mg_defuhand();
62   #else
63   extern int      (*mg_ehand[MG_NENTITIES])(int argc, char **argv);
64 + extern int      (*mg_uhand)(int argc, char **argv);
65 + extern int      mg_defuhand(int, char **);
66   #endif
67  
68 + extern unsigned mg_nunknown;            /* count of unknown entities */
69 +
70                          /* Error codes */
71   #define MG_OK           0               /* normal return value */
72   #define MG_EUNK         1               /* unknown entity */
# Line 71 | Line 82 | extern int     (*mg_ehand[MG_NENTITIES])(int argc, char **
82  
83   #define MG_NERRS        11
84  
85 < extern char     *mg_err[MG_NERRS];
85 > extern char     *mg_err[MG_NERRS];      /* list of error messages */
86  
87   /*
88   * The general process for running the parser is to fill in the mg_ehand
# Line 150 | Line 161 | extern int     mg_nqcdivs;             /* divisions per quarter circl
161   extern int mg_entity();                 /* get entity number from its name */
162   extern int isint();                     /* non-zero if integer format */
163   extern int isflt();                     /* non-zero if floating point format */
164 + extern int isname();                    /* non-zero if legal identifier name */
165   #else
166   extern int mg_entity(char *);           /* get entity number from its name */
167   extern int isint(char *);               /* non-zero if integer format */
168   extern int isflt(char *);               /* non-zero if floating point format */
169 + extern int isname(char *);              /* non-zero if legal identifier name */
170   #endif
171  
172   /************************************************************************
# Line 339 | Line 352 | struct xf_array {
352  
353   typedef struct xf_spec {
354          long    xid;                    /* unique transform id */
355 <        short   xav0;                   /* zeroeth argument in xf_argv array */
343 <        short   xac;                    /* transform argument count */
355 >        short   xac;                    /* context argument count */
356          short   rev;                    /* boolean true if vertices reversed */
357          XF      xf;                     /* cumulative transformation */
358          struct xf_array *xarr;          /* transformation array pointer */
359          struct xf_spec  *prev;          /* previous transformation context */
360   } XF_SPEC;                      /* followed by argument buffer */
361  
362 < extern int      xf_argc;                        /* total # transform args. */
363 < extern char     **xf_argv;                      /* transform arguments */
364 < extern XF_SPEC  *xf_context;                    /* current context */
362 > extern XF_SPEC  *xf_context;                    /* current transform context */
363 > extern char     **xf_argend;                    /* last transform argument */
364 >
365 > #define xf_ac(xf)       ((xf)->xac)
366 > #define xf_av(xf)       (xf_argend - (xf)->xac)
367 >
368 > #define xf_argc         (xf_context==NULL ? 0 : xf_ac(xf_context))
369 > #define xf_argv         xf_av(xf_context)
370  
371   /*
372   * The transformation handler should do most of the work that needs

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines