]> andersk Git - splint.git/blobdiff - src/uentryList.c
Merged this branch with the one in the splint.sf.net repository.
[splint.git] / src / uentryList.c
index 96951d631248e8aa46ae8088da90ead99abddf52..3eed5b5e3c0009b4c688ea28595f01107bfcea08 100644 (file)
@@ -155,6 +155,91 @@ uentryList uentryList_add (uentryList s, /*@keep@*/ uentry el)
   return (st);
 }
 
+cstring uentryList_unparseParamsComplete (uentryList s)
+{
+  int i;
+  cstring st = cstring_undefined;
+  cstring cur;
+  
+  if (uentryList_isUndefined (s))
+    {
+      return st;
+    }
+  else if (uentryList_isVoid (s))
+    {
+      return (cstring_makeLiteral ("void"));
+    }
+  else
+    {
+      for (i = 0; i < uentryList_size (s); i++)
+       {
+         cstring cQuals, name, ctypeName;
+
+         cQuals = qualList_unparse(s->elements[i]->cQuals);
+
+         name =  uentry_getName(s->elements[i]);
+
+         if (ctype_isFunction (uentry_getType (s->elements[i])) )
+           {
+             cur = ctype_unparseFunctionPointer(uentry_getType (s->elements[i] ), cQuals, name);
+             cstring_free(cQuals);
+           }
+         else
+           {
+             ctypeName =  message("%s", ctype_unparse(uentry_getType (s->elements[i] ) ) );
+
+             if (ctype_isFixedArray (uentry_getType (s->elements[i] ) ) )
+               {
+                 cstring aType, aSize;
+                 aType =   cstring_beforeChar(ctypeName, '[');
+                 aSize =    cstring_afterChar(ctypeName, '[');
+
+                 cur = message ("%q %q %q %s",
+                                cQuals, aType, name, aSize  );
+
+                 //              cstring_free(ctypeName);
+               }
+             else    if (ctype_isArray (uentry_getType (s->elements[i] ) ) )
+               {
+                 cstring aType;
+                 aType =   cstring_beforeChar(ctypeName, '[');
+
+                 cur = message ("%s %s %s []",
+                                cQuals, aType, name);
+
+                 //              cstring_free(ctypeName);
+               }
+             else if (ctype_isElips (uentry_getType (s->elements[i] ) ) )
+               {
+                 cur = message(" ... ");
+               }
+             else
+               {
+                 cur = message ("%s %s %s",
+                                cQuals, ctypeName,
+                                name  );
+               }
+             if (qualList_hasInnerConstQualifier (s->elements[i]->cQuals) )
+               {
+                 cur = insertInnerConstQual(cur);
+               }
+           }
+         
+         if (i == 0)
+           {
+             st = message ("%q", cur);
+           }
+         else
+           {
+             st = message ("%q, %q",
+                           st, cur);
+           }
+       }
+      
+      return st;
+    }
+}
+
 cstring uentryList_unparseParams (uentryList s)
 {
   int i;
This page took 0.043802 seconds and 4 git commands to generate.