/*
-** LCLint - annotation-assisted static program checker
-** Copyright (C) 1994-2001 University of Virginia,
+** Splint - annotation-assisted static program checker
+** Copyright (C) 1994-2003 University of Virginia,
** Massachusetts Institute of Technology
**
** This program is free software; you can redistribute it and/or modify it
** the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
** MA 02111-1307, USA.
**
-** For information on lclint: lclint-request@cs.virginia.edu
-** To report a bug: lclint-bug@cs.virginia.edu
-** For more information: http://lclint.cs.virginia.edu
+** For information on splint: info@splint.org
+** To report a bug: splint-bug@splint.org
+** For more information: http://www.splint.org
*/
/*
** flagSpec.c
*/
-# include "lclintMacros.nf"
+# include "splintMacros.nf"
# include "basic.h"
static /*@only@*/ flagSpecItem flagSpecItem_create (/*@only@*/ cstring fname)
{
- flagSpecItem res = (flagSpecItem) dmalloc (sizeof (*res));
+ flagSpecItem res = (flagSpecItem) dmalloc (sizeof (*res));\r
+ DPRINTF (("Creating item: [%p]", fname));\r
+ DPRINTF (("The name is: %s", fname));\r
+
res->name = fname;
- res->code = identifyFlag (fname);
+ res->code = flags_identifyFlag (fname);
/* Invalid flag okay for now... */
return res;
}
{
flagSpec res = (flagSpec) dmalloc (sizeof (*res));
res->tspec = fitem;
- res->trest = frest;
+ res->trest = frest;\r
+ DPRINTF (("New flag spec: %s", flagSpec_unparse (res)));
return res;
}
flagSpec flagSpec_createPlain (cstring fname)
{
- flagSpecItem fitem = flagSpecItem_create (fname);
- flagSpec res = flagSpec_create (fitem, flagSpec_undefined);
+ flagSpecItem fitem = flagSpecItem_create (fname);\r
+ flagSpec res = flagSpec_create (fitem, flagSpec_undefined);
+ DPRINTF (("New flag spec: %s", flagSpec_unparse (res)));\r
return res;
}
}
}
+flagSpec flagSpec_copy (flagSpec f)
+{
+ if (flagSpec_isDefined (f))
+ {
+ if (flagSpec_isDefined (f->trest))
+ {
+ return flagSpec_createOr (cstring_copy (f->tspec->name),
+ flagSpec_copy (f->trest));
+ }
+ else
+ {
+ return flagSpec_createPlain (cstring_copy (f->tspec->name));
+ }
+ }
+ else
+ {
+ return flagSpec_undefined;
+ }
+}
+
cstring flagSpec_unparse (flagSpec f)
{
if (flagSpec_isDefined (f))
{
BADBRANCH;
}
+
+ BADBRANCHRET (INVALID_FLAG);
}