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.26 by greg, Wed Nov 8 09:40:26 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 68 | Line 79 | extern int     (*mg_ehand[MG_NENTITIES])(int argc, char **
79   #define MG_EMEM         8               /* out of memory */
80   #define MG_ESEEK        9               /* file seek error */
81   #define MG_EBADMAT      10              /* bad material specification */
82 + #define MG_ELINE        11              /* input line too long */
83  
84 < #define MG_NERRS        11
84 > #define MG_NERRS        12
85  
86 < extern char     *mg_err[MG_NERRS];
86 > extern char     *mg_err[MG_NERRS];      /* list of error messages */
87  
88   /*
89   * The general process for running the parser is to fill in the mg_ehand
# Line 150 | Line 162 | extern int     mg_nqcdivs;             /* divisions per quarter circl
162   extern int mg_entity();                 /* get entity number from its name */
163   extern int isint();                     /* non-zero if integer format */
164   extern int isflt();                     /* non-zero if floating point format */
165 + extern int isname();                    /* non-zero if legal identifier name */
166   #else
167   extern int mg_entity(char *);           /* get entity number from its name */
168   extern int isint(char *);               /* non-zero if integer format */
169   extern int isflt(char *);               /* non-zero if floating point format */
170 + extern int isname(char *);              /* non-zero if legal identifier name */
171   #endif
172  
173   /************************************************************************
# Line 339 | Line 353 | struct xf_array {
353  
354   typedef struct xf_spec {
355          long    xid;                    /* unique transform id */
356 <        short   xav0;                   /* zeroeth argument in xf_argv array */
343 <        short   xac;                    /* transform argument count */
356 >        short   xac;                    /* context argument count */
357          short   rev;                    /* boolean true if vertices reversed */
358          XF      xf;                     /* cumulative transformation */
359          struct xf_array *xarr;          /* transformation array pointer */
360          struct xf_spec  *prev;          /* previous transformation context */
361   } XF_SPEC;                      /* followed by argument buffer */
362  
363 < extern int      xf_argc;                        /* total # transform args. */
364 < extern char     **xf_argv;                      /* transform arguments */
365 < extern XF_SPEC  *xf_context;                    /* current context */
363 > extern XF_SPEC  *xf_context;                    /* current transform context */
364 > extern char     **xf_argend;                    /* last transform argument */
365 >
366 > #define xf_ac(xf)       ((xf)->xac)
367 > #define xf_av(xf)       (xf_argend - (xf)->xac)
368 >
369 > #define xf_argc         (xf_context==NULL ? 0 : xf_ac(xf_context))
370 > #define xf_argv         xf_av(xf_context)
371  
372   /*
373   * The transformation handler should do most of the work that needs

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines