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.29 by greg, Thu Feb 8 16:29:33 1996 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       1               /* 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 150 | Line 163 | extern int     mg_nqcdivs;             /* divisions per quarter circl
163   extern int mg_entity();                 /* get entity number from its name */
164   extern int isint();                     /* non-zero if integer format */
165   extern int isflt();                     /* non-zero if floating point format */
166 + extern int isname();                    /* non-zero if legal identifier name */
167   #else
168   extern int mg_entity(char *);           /* get entity number from its name */
169   extern int isint(char *);               /* non-zero if integer format */
170   extern int isflt(char *);               /* non-zero if floating point format */
171 + extern int isname(char *);              /* non-zero if legal identifier name */
172   #endif
173  
174   /************************************************************************
# Line 339 | 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 */
343 <        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 */
352 < 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)==NULL ? 0 : (xf)->xac)
368 + #define xf_av(xf)       (xf_argend - (xf)->xac)
369 +
370 + #define xf_argc         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
375   * doing.  Just pass it any xf entities, then use the associated
# Line 374 | Line 393 | extern void    xf_clear();             /* clear xf stack */
393  
394   /* The following are support routines you probably won't call directly */
395  
396 + XF_SPEC         *new_xf();              /* allocate new transform */
397 + void            free_xf();              /* free a transform */
398 + int             xf_aname();             /* name this instance */
399 + long            comp_xfid();            /* compute unique ID */
400   extern void     multmat4();             /* m4a = m4b X m4c */
401   extern void     multv3();               /* v3a = v3b X m4 (vectors) */
402   extern void     multp3();               /* p3a = p3b X m4 (points) */
# Line 390 | Line 413 | extern void    xf_clear(void);                 /* clear xf stack */
413  
414   /* The following are support routines you probably won't call directly */
415  
416 + XF_SPEC         *new_xf(int, char **);          /* allocate new transform */
417 + void            free_xf(XF_SPEC *);             /* free a transform */
418 + int             xf_aname(struct xf_array *);    /* name this instance */
419 + long            comp_xfid(MAT4);                /* compute unique ID */
420   extern void     multmat4(MAT4, MAT4, MAT4);     /* m4a = m4b X m4c */
421   extern void     multv3(FVECT, FVECT, MAT4);     /* v3a = v3b X m4 (vectors) */
422   extern void     multp3(FVECT, FVECT, MAT4);     /* p3a = p3b X m4 (points) */
# Line 401 | Line 428 | extern int     xf(XF *, int, char **);         /* interpret trans
428   *      Miscellaneous definitions
429   */
430  
431 + #ifndef  PI
432   #ifdef  M_PI
433   #define  PI             M_PI
434   #else
435   #define  PI             3.14159265358979323846
436 + #endif
437   #endif
438  
439   #ifdef DCL_ATOF

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines