/* global variables */
-int ibase = 10;
-int obase = 10;
+int _ibase = 10;
+int _obase = 10;
#define DEFAULT_FORMAT "=> %.6g\n"
char *_format = NULL;
}
}
+void set_base (int in, int out)
+{
+ _ibase = in;
+ _obase = out;
+}
+
+char *show_base ()
+{
+ static char str[16] = {0};
+ sprintf (str, "%d/%d", _ibase, _obase);
+ return str;
+}
-char *itoa (unsigned long value)
+int get_ibase ()
+{
+ return _ibase;
+}
+
+/* multi base integer to ascii function */
+
+char *mbitoa (unsigned long value)
{
static char str[8 * sizeof (long) + 1];
char buffer[8 * sizeof (long) + 1] = {0};
int size = 0;
do {
- char x = value % obase;
+ char x = value % _obase;
buffer[size++] = (x > 9) ? 'a' + x - 10 : '0' + x;
- value /= obase;
+ value /= _obase;
} while (value != 0);
/* revert */
return str;
}
-/* vim: set ts=4 sw=4 et: */
-
-
-
-
double print (double value)
{
- if (obase == 10) {
- fprintf (stdout, _format ? _format : DEFAULT_FORMAT, value);
+ if (_obase == 10) {
+ printf (_format ? _format : DEFAULT_FORMAT, value);
} else {
- fprintf (stdout, "%s%s\n", (_prompt) ? _prompt : DEFAULT_PROMPT, itoa ((unsigned int)value));
+ printf ("%s%s\n", (_prompt) ? _prompt : DEFAULT_PROMPT, mbitoa ((unsigned int)value));
}
- fflush (stdout);
return value;
}
double printl (double value)
{
- if (obase == 10) {
- fprintf (stdout, _minform ? _minform : DEFAULT_MINFORM, value);
+ if (_obase == 10) {
+ printf (_minform ? _minform : DEFAULT_MINFORM, value);
} else {
- fprintf (stdout, "%s%s", (_prompt) ? _prompt : DEFAULT_PROMPT, itoa ((unsigned int)value));
+ printf ("%s", mbitoa ((unsigned int)value));
}
- fflush (stdout);
return value;
}