]> andersk Git - splint.git/blame - src/metaStateExpression.c
*** empty log message ***
[splint.git] / src / metaStateExpression.c
CommitLineData
08eb3d0e 1/*
2** LCLint - annotation-assisted static program checker
3** Copyright (C) 1994-2001 University of Virginia,
4** Massachusetts Institute of Technology
5**
6** This program is free software; you can redistribute it and/or modify it
7** under the terms of the GNU General Public License as published by the
8** Free Software Foundation; either version 2 of the License, or (at your
9** option) any later version.
10**
11** This program is distributed in the hope that it will be useful, but
12** WITHOUT ANY WARRANTY; without even the implied warranty of
13** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14** General Public License for more details.
15**
16** The GNU General Public License is available from http://www.gnu.org/ or
17** the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
18** MA 02111-1307, USA.
19**
20** For information on lclint: lclint-request@cs.virginia.edu
21** To report a bug: lclint-bug@cs.virginia.edu
22** For more information: http://lclint.cs.virginia.edu
23*/
24/*
25** metaStateExpression.c
26*/
27
28# include "lclintMacros.nf"
29# include "basic.h"
30# include "mtincludes.h"
31
32metaStateExpression
33metaStateExpression_create (/*@only@*/ metaStateSpecifier spec)
34{
35 metaStateExpression res = (metaStateExpression) dmalloc (sizeof (*res));
36 res->spec = spec;
37 res->rest = NULL;
38 return res;
39}
40
41metaStateExpression
42metaStateExpression_createMerge (/*@only@*/ metaStateSpecifier spec, /*@only@*/ metaStateExpression exp)
43{
44 metaStateExpression res = (metaStateExpression) dmalloc (sizeof (*res));
45 res->spec = spec;
46 res->rest = exp;
47 return res;
48}
49
50cstring metaStateExpression_unparse (metaStateExpression m)
51{
52 llassert (m != NULL);
53
54 if (m->rest != NULL)
55 {
56 return message ("%q | %q",
57 metaStateSpecifier_unparse (m->spec),
58 metaStateExpression_unparse (m->rest));
59
60 }
61 else
62 {
63 return metaStateSpecifier_unparse (m->spec);
64 }
65}
66
3814599d 67metaStateExpression metaStateExpression_copy (metaStateExpression m)
68{
69 if (m == NULL) return NULL;
70
71 if (m->rest != NULL)
72 {
73 return metaStateExpression_createMerge (metaStateSpecifier_copy (m->spec),
74 metaStateExpression_copy (m->rest));
75
76 }
77 else
78 {
79 return metaStateExpression_create (metaStateSpecifier_copy (m->spec));
80 }
81}
82
08eb3d0e 83void metaStateExpression_free (/*@only@*/ metaStateExpression m)
84{
85 llassert (m != NULL);
86
87 metaStateSpecifier_free (m->spec);
88
89 if (m->rest != NULL) {
90 metaStateExpression_free (m->rest);
91 }
92
93 sfree (m);
94}
95
96
This page took 0.057478 seconds and 5 git commands to generate.