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

# User Rev Content
1 greg 1.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     }