source: tags/initial/fig2dev/free.c

Last change on this file was 2, checked in by oldcode, 24 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.2 KB
Line 
1/*
2 * TransFig: Facility for Translating Fig code
3 * Copyright (c) 1985 Supoj Sutantavibul
4 * Copyright (c) 1991 Micah Beck
5 *
6 * Permission to use, copy, modify, distribute, and sell this software and its
7 * documentation for any purpose is hereby granted without fee, provided that
8 * the above copyright notice appear in all copies and that both that
9 * copyright notice and this permission notice appear in supporting
10 * documentation. The authors make no representations about the suitability
11 * of this software for any purpose.  It is provided "as is" without express
12 * or implied warranty.
13 *
14 * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16 * EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20 * PERFORMANCE OF THIS SOFTWARE.
21 *
22 */
23
24#include <stdio.h>
25#include <math.h>
26#include "object.h"
27
28free_arc(list)
29F_arc   **list;
30{
31        F_arc   *a, *arc;
32
33        for (a = *list; a != NULL;) {
34            arc = a;
35            a = a->next;
36            if (arc->for_arrow) free((char*)arc->for_arrow);
37            if (arc->back_arrow) free((char*)arc->back_arrow);
38            free((char*)arc);
39            } 
40        *list = NULL;
41        }
42
43free_compound(list)
44F_compound      **list;
45{
46        F_compound      *c, *compound;
47
48        for (c = *list; c != NULL;) {
49            compound = c;
50            c = c->next;
51            free_arc(&compound->arcs);
52            free_compound(&compound->compounds);
53            free_ellipse(&compound->ellipses);
54            free_line(&compound->lines);
55            free_spline(&compound->splines);
56            free_text(&compound->texts);
57            free((char*)compound);
58            } 
59        *list = NULL;
60        }
61
62free_ellipse(list)
63F_ellipse       **list;
64{
65        F_ellipse       *e, *ellipse;
66
67        for (e = *list; e != NULL;) {
68            ellipse = e;
69            e = e->next;
70            free((char*)ellipse);
71            } 
72        *list = NULL;
73        }
74
75free_line(list)
76F_line  **list;
77{
78        F_line  *l, *line;
79
80        for (l = *list; l != NULL;) {
81            line = l;
82            l = l->next;
83            free_linestorage(line);
84            } 
85        *list = NULL;
86        }
87
88free_text(list)
89F_text  **list;
90{
91        F_text  *t, *text;
92
93        for (t = *list; t != NULL;) {
94            text = t;
95            t = t->next;
96            cfree(text->cstring);
97            free((char*)text);
98            } 
99        *list = NULL;
100        }
101
102free_spline(list)
103F_spline        **list;
104{
105        F_spline        *s, *spline;
106
107        for (s = *list; s != NULL;) {
108            spline = s;
109            s = s->next;
110            free_splinestorage(spline);
111            }
112        *list = NULL;
113        }
114
115free_splinestorage(s)
116F_spline      *s;
117{
118        F_point         *p, *q;
119        F_control       *a, *b;
120
121        for (p = s->points; p != NULL; p = q) {
122            q = p->next;
123            free((char*)p);
124            }
125        for (a = s->controls; a != NULL; a = b) {
126            b = a->next;
127            free((char*)a);
128            }
129        if (s->for_arrow) free((char*)s->for_arrow);
130        if (s->back_arrow) free((char*)s->back_arrow);
131        free((char*)s);
132        }
133
134free_linestorage(l)
135F_line  *l;
136{
137        F_point *p, *q;
138
139        for (p = l->points; p != NULL; p = q) {
140            q = p->next;
141            free((char*)p);
142            }
143        if (l->for_arrow) free((char*)l->for_arrow);
144        if (l->back_arrow) free((char*)l->back_arrow);
145        free((char*)l);
146        }
Note: See TracBrowser for help on using the repository browser.