2 ** Splint - annotation-assisted static program checker
3 ** Copyright (C) 1994-2003 University of Virginia,
4 ** Massachusetts Institute of Technology
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.
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.
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.
20 ** For information on splint: info@splint.org
21 ** To report a bug: splint-bug@splint.org
22 ** For more information: http://www.splint.org
28 # include "splintMacros.nf"
31 extern mtTransferAction
mtTransferAction_createValue (mttok value
)
33 mtTransferAction res
= (mtTransferAction
) dmalloc (sizeof (*res
));
35 res
->kind
= MTAK_VALUE
;
36 llassert (mttok_isIdentifier (value
));
37 res
->value
= mttok_getText (value
);
38 res
->message
= cstring_undefined
;
39 res
->loc
= mttok_stealLoc (value
);
44 extern mtTransferAction
mtTransferAction_createError (mttok tok
)
46 mtTransferAction res
= (mtTransferAction
) dmalloc (sizeof (*res
));
48 res
->kind
= MTAK_ERROR
;
49 res
->value
= cstring_undefined
;
50 res
->message
= cstring_undefined
;
51 res
->loc
= mttok_stealLoc (tok
);
56 extern mtTransferAction
mtTransferAction_createErrorMessage (mttok message
)
58 mtTransferAction res
= (mtTransferAction
) dmalloc (sizeof (*res
));
60 res
->kind
= MTAK_ERROR
;
61 res
->message
= mttok_getText (message
);
62 res
->value
= cstring_undefined
;
63 res
->loc
= mttok_stealLoc (message
);
68 extern cstring
mtTransferAction_getMessage (mtTransferAction node
)
70 llassert (node
->kind
== MTAK_ERROR
);
74 extern cstring
mtTransferAction_unparse (mtTransferAction node
)
77 case MTAK_VALUE
: return cstring_copy (node
->value
);
79 if (cstring_isDefined (node
->message
)) {
80 return message ("error \"%s\"", node
->message
);
82 return cstring_makeLiteral ("<error>");
90 extern void mtTransferAction_free (/*@only@*/ mtTransferAction node
)
92 cstring_free (node
->value
);
93 cstring_free (node
->message
);
94 fileloc_free (node
->loc
);