ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cv/mgflib/object.c
Revision: 1.1
Committed: Tue Jun 21 14:45:46 1994 UTC (29 years, 10 months ago) by greg
Content type: text/plain
Branch: MAIN
Log Message:
Initial revision

File Contents

# Content
1 /* Copyright (c) 1994 Regents of the University of California */
2
3 #ifndef lint
4 static char SCCSid[] = "$SunId$ LBL";
5 #endif
6
7 /*
8 * Header file for tracking hierarchical object names
9 */
10
11 #include <stdio.h>
12 #include <string.h>
13 #include "parser.h"
14
15
16 int obj_nnames; /* depth of name hierarchy */
17 char **obj_name; /* name list */
18
19 static int obj_maxname; /* allocated list size */
20
21 #define ALLOC_INC 16 /* list increment */
22
23
24 int
25 obj_handler(ac, av) /* handle an object entity statement */
26 int ac;
27 char **av;
28 {
29 if (ac == 1) { /* just pop top object */
30 if (obj_nnames < 1)
31 return(MG_OK); /* should be error? */
32 free((MEM_PTR)obj_name[--obj_nnames]);
33 obj_name[obj_nnames] = NULL;
34 return(MG_OK);
35 }
36 if (ac != 2)
37 return(MG_EARGC);
38 if (obj_nnames >= obj_maxname) { /* enlarge array */
39 if (!obj_maxname)
40 obj_name = (char **)malloc(
41 (obj_maxname=ALLOC_INC)*sizeof(char *));
42 else
43 obj_name = (char **)realloc((MEM_PTR)obj_name,
44 (obj_maxname+=ALLOC_INC)*sizeof(char *));
45 if (obj_name == NULL)
46 return(MG_EMEM);
47 }
48 /* allocate new entry */
49 obj_name[obj_nnames] = (char *)malloc(strlen(av[1])+1);
50 if (obj_name[obj_nnames] == NULL)
51 return(MG_EMEM);
52 strcpy(obj_name[obj_nnames++], av[1]);
53 obj_name[obj_nnames] = NULL;
54 return(MG_OK);
55 }