* 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
*
*/
*valuep= 0;
i= 0;
while (tokens[i] &&
- strcmp(*option, tokens[i]))
+ strcmp(*option, tokens[i]))
i++;
if (!tokens[i])
*valuep= *option;
}
-char *
+const char *
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);
}
-char *
-get_id_string(struct id_element *ids, int id, char *def)
+const char *
+get_id_string(struct id_element *ids, int id, const char *def)
{
- char *s= get_id_string(ids, id);
+ const char *s= get_id_string(ids, id);
return(s?s:def);
}
int
-get_string_id(struct id_element *ids, char *str)
+get_string_id(struct id_element *ids, const 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);
}
int
-get_string_id(struct id_element *ids, char *str, int def)
+get_string_id(struct id_element *ids, const 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);
-static char *
-vformat_string(char *format, va_list ap)
+char *
+format_string(const char *format, ...)
{
+ va_list ap;
+
+ va_start(ap, format);
#ifdef HAVE_VASPRINTF
char *msg= NULL;
vasprintf(&msg, format, ap);
return(msg);
-#else
-# ifdef HAVE_VSNPRINTF
- char *msg= malloc(80*25);
+#elif defined HAVE_VSNPRINTF
+ char *msg= (char*)malloc(80*25);
vsnprintf(msg, 80*25, format, ap);
return(msg);
-# else
-# ifdef HAVE_VPRINTF
- char *msg= malloc(80*25);
- vsprintf(msg, format, ap); /* Dangerous */
+#elif defined HAVE__VSNPRINTF
+ char *msg= (char*)malloc(80*25);
+ _vsnprintf(msg, 80*25, format, ap);
return(msg);
-# endif
-# endif
+#else
+#error No vasprintf or vsnprintf
#endif
-}
-
-char *
-format_string(char *format, ...)
-{
- va_list ap;
-
- va_start(ap, format);
- char *s= vformat_string(format, ap);
va_end(ap);
- return(s);
-}
-
-
-void
-print_char_octal(char c, FILE *f)
-{
- if (strchr("\a\b\f\n\r\t\v\"", c))
- switch (c)
- {
- case '\a': fprintf(f, "\a"); break;
- case '\b': fprintf(f, "\b"); break;
- case '\f': fprintf(f, "\f"); break;
- case '\n': fprintf(f, "\n"); break;
- case '\r': fprintf(f, "\r"); break;
- case '\t': fprintf(f, "\t"); break;
- case '\v': fprintf(f, "\v"); break;
- case '\"': fprintf(f, "\""); break;
- }
- else if (isprint(c))
- fprintf(f, "%c", c);
- else
- fprintf(f, "\\%03hho", c);
+ return(msg);
}
-char *
+const char *
object_name(class cl_base *o)
{
- char *name= 0;
+ const char *name= 0;
if (o)
name= o->get_name();
- if (name &&
- *name)
+ if (name && *name)
return(name);
return("(unkown)");
}
+char *
+case_string(enum letter_case lcase, const 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);
+}
+
+/*const 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 */