* sim/ucsim/cmd.src/newcmdposix.cc: #include <assert.h>
[fw/sdcc] / sim / ucsim / utils.cc
index d8b4a0833152c784ab9481a1936aa0cf8a8771ae..a46aebc460ad40a7c362e27e840f64fcc5370fb2 100644 (file)
@@ -2,7 +2,7 @@
  * Simulator of microcontrollers (utils.cc)
  *
  * Copyright (C) 1999,99 Drotos Daniel, Talker Bt.
- * 
+ *
  * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu
  *
  */
@@ -25,9 +25,18 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 02111-1307, USA. */
 /*@1@*/
 
+#include "ddconfig.h"
+
+#include <stdio.h>
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <unistd.h>
 #include "i_string.h"
 
+  // prj
 #include "stypes.h"
+#include "pobjcl.h"
 
 
 int
@@ -49,7 +58,7 @@ get_sub_opt(char **option, const char * const *tokens, char **valuep)
     *valuep= 0;
   i= 0;
   while (tokens[i] &&
-        strcmp(*option, tokens[i]))
+   strcmp(*option, tokens[i]))
     i++;
   if (!tokens[i])
     *valuep= *option;
@@ -63,8 +72,7 @@ get_id_string(struct id_element *ids, int id)
 {
   int i= 0;
 
-  while (ids[i].id_string &&
-        id != ids[i].id)
+  while (ids[i].id_string && id != ids[i].id)
     i++;
   return(ids[i].id_string);
 }
@@ -82,8 +90,7 @@ get_string_id(struct id_element *ids, char *str)
 {
   int i= 0;
 
-  while (ids[i].id_string &&
-        strcmp(ids[i].id_string, str) != 0)
+  while (ids[i].id_string && strcmp(ids[i].id_string, str) != 0)
     i++;
   return(ids[i].id);
 }
@@ -93,10 +100,99 @@ get_string_id(struct id_element *ids, char *str, int def)
 {
   int i= 0;
 
-  while (ids[i].id_string &&
-        strcmp(ids[i].id_string, str) != 0)
+  while (ids[i].id_string && strcmp(ids[i].id_string, str) != 0)
     i++;
   return(ids[i].id_string?ids[i].id:def);
 }
 
+
+extern "C" int vasprintf(char **strp, const  char *format, va_list ap);
+extern "C" int vsnprintf(char *str, size_t size,const char *format,va_list ap);
+
+char *
+format_string(char *format, ...)
+{
+  va_list ap;
+
+  va_start(ap, format);
+#ifdef HAVE_VASPRINTF
+  char *msg= NULL;
+  vasprintf(&msg, format, ap);
+  return(msg);
+#elif defined HAVE_VSNPRINTF
+  char *msg= (char*)malloc(80*25);
+  vsnprintf(msg, 80*25, format, ap);
+  return(msg);
+#elif defined HAVE__VSNPRINTF
+  char *msg= (char*)malloc(80*25);
+  _vsnprintf(msg, 80*25, format, ap);
+  return(msg);
+#else
+#error No vasprintf or vsnprintf
+#endif
+  va_end(ap);
+  return(msg);
+}
+
+
+char *
+object_name(class cl_base *o)
+{
+  char *name= 0;
+
+  if (o)
+    name= o->get_name();
+  if (name && *name)
+    return(name);
+  return("(unkown)");
+}
+
+
+char *
+case_string(enum letter_case lcase, char *str)
+{
+  char *p= strdup(str);
+  char *s= p;
+
+  switch (lcase)
+    {
+    case case_upper:
+      while (p && *p)
+        {
+          *p= toupper(*p);
+          p++;
+       }
+      break;
+    case case_lower:
+      while (p && *p)
+        {
+          *p= tolower(*p);
+          p++;
+        }
+      break;
+    case case_case:
+      if (!p || *p == '\0')
+        break;
+      while (isspace(*p))
+        p++;
+      if (*p)
+        *p= toupper(*p);
+      break;
+    }
+  return(s);
+}
+
+/*char *
+case_string(enum letter_case lcase, const char *str)
+{
+  char *p= NIL;
+
+  if (!str ||
+      !*str)
+    return(NIL);
+  p= strdup(str);
+  return case_string(lcase, p);
+}*/
+
+
 /* End of utils.cc */