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.22 by greg, Wed May 10 17:46:05 1995 UTC vs.
Revision 1.27 by greg, Wed Nov 29 16:45:13 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 + #define MG_ECNTXT       12              /* unmatched context close */
84  
85 < #define MG_NERRS        11
85 > #define MG_NERRS        13
86  
87 < extern char     *mg_err[MG_NERRS];
87 > extern char     *mg_err[MG_NERRS];      /* list of error messages */
88  
89   /*
90   * The general process for running the parser is to fill in the mg_ehand
# Line 341 | Line 354 | struct xf_array {
354  
355   typedef struct xf_spec {
356          long    xid;                    /* unique transform id */
357 <        short   xav0;                   /* zeroeth argument in xf_argv array */
345 <        short   xac;                    /* transform argument count */
357 >        short   xac;                    /* context argument count */
358          short   rev;                    /* boolean true if vertices reversed */
359          XF      xf;                     /* cumulative transformation */
360          struct xf_array *xarr;          /* transformation array pointer */
361          struct xf_spec  *prev;          /* previous transformation context */
362   } XF_SPEC;                      /* followed by argument buffer */
363  
364 < extern int      xf_argc;                        /* total # transform args. */
365 < extern char     **xf_argv;                      /* transform arguments */
366 < extern XF_SPEC  *xf_context;                    /* current context */
364 > extern XF_SPEC  *xf_context;                    /* current transform context */
365 > extern char     **xf_argend;                    /* last transform argument */
366 >
367 > #define xf_ac(xf)       ((xf)->xac)
368 > #define xf_av(xf)       (xf_argend - (xf)->xac)
369 >
370 > #define xf_argc         (xf_context==NULL ? 0 : xf_ac(xf_context))
371 > #define xf_argv         xf_av(xf_context)
372  
373   /*
374   * The transformation handler should do most of the work that needs

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines