150 |
|
extern int mg_entity(); /* get entity number from its name */ |
151 |
|
extern int isint(); /* non-zero if integer format */ |
152 |
|
extern int isflt(); /* non-zero if floating point format */ |
153 |
+ |
extern int isname(); /* non-zero if legal identifier name */ |
154 |
|
#else |
155 |
|
extern int mg_entity(char *); /* get entity number from its name */ |
156 |
|
extern int isint(char *); /* non-zero if integer format */ |
157 |
|
extern int isflt(char *); /* non-zero if floating point format */ |
158 |
+ |
extern int isname(char *); /* non-zero if legal identifier name */ |
159 |
|
#endif |
160 |
|
|
161 |
|
/************************************************************************ |
341 |
|
|
342 |
|
typedef struct xf_spec { |
343 |
|
long xid; /* unique transform id */ |
344 |
< |
short xav0; /* zeroeth argument in xf_argv array */ |
343 |
< |
short xac; /* transform argument count */ |
344 |
> |
short xac; /* context argument count */ |
345 |
|
short rev; /* boolean true if vertices reversed */ |
346 |
|
XF xf; /* cumulative transformation */ |
347 |
|
struct xf_array *xarr; /* transformation array pointer */ |
348 |
|
struct xf_spec *prev; /* previous transformation context */ |
349 |
|
} XF_SPEC; /* followed by argument buffer */ |
350 |
|
|
351 |
< |
extern int xf_argc; /* total # transform args. */ |
352 |
< |
extern char **xf_argv; /* transform arguments */ |
353 |
< |
extern XF_SPEC *xf_context; /* current context */ |
351 |
> |
extern XF_SPEC *xf_context; /* current transform context */ |
352 |
> |
extern char **xf_argend; /* last transform argument */ |
353 |
> |
|
354 |
> |
#define xf_ac(xf) ((xf)->xac) |
355 |
> |
#define xf_av(xf) (xf_argend - (xf)->xac) |
356 |
> |
|
357 |
> |
#define xf_argc (xf_context==NULL ? 0 : xf_ac(xf_context)) |
358 |
> |
#define xf_argv xf_av(xf_context) |
359 |
|
|
360 |
|
/* |
361 |
|
* The transformation handler should do most of the work that needs |