rpn/src/rpn-general.h

144 lines
2.8 KiB
C
Raw Normal View History

2014-09-24 16:55:59 +02:00
void test();
//
void nop()
{
// nop
}
void good_bye()
{
2014-02-11 14:33:40 +01:00
ERR_CONTEXT(ret_good_bye);
}
void verbose()
{
MIN_ARGUMENTS(1);
ARG_MUST_BE_OF_TYPE(0, cmd_number);
g_verbose = (int)getf();
}
void help()
{
2014-09-24 16:55:59 +02:00
cout<<endl;
2015-03-02 21:20:56 +01:00
cout<<ATTR_BOLD<<uname<<ATTR_OFF<<endl;
2014-09-24 16:55:59 +02:00
cout<<endl;
2015-02-23 17:33:05 +01:00
// syntax
for (int i = 0; syntax[i] != NULL; i++)
cout<<syntax[i]<<endl;
// keywords
2014-02-12 11:26:26 +01:00
for(unsigned int i=0; i<sizeof(_keywords)/sizeof(_keywords[0]); i++)
if (_keywords[i].comment.size() != 0)
2015-02-23 17:33:05 +01:00
cout<<_keywords[i].name<<"\t"<<_keywords[i].comment<<endl;
cout<<endl;
2015-02-23 17:33:05 +01:00
// different modes
2014-09-06 22:31:01 +02:00
cout<<"Current verbosity is "<<g_verbose<<endl;
2015-02-23 17:33:05 +01:00
2014-09-06 22:31:01 +02:00
cout<<"Current float mode is ";
switch(number::s_mode)
2014-09-06 22:31:01 +02:00
{
case number::std: cout << "'std'"; break;
case number::fix: cout << "'fix'"; break;
case number::sci: cout << "'sci'"; break;
default: cout << "unknown"; break;
}
2015-02-23 17:33:05 +01:00
cout<<endl<<"Current float precision is "<<number::s_current_precision<<endl;
2015-02-23 17:33:05 +01:00
cout<<"Current binary mode is ";
switch(binary::s_mode)
{
case binary::dec: cout << "'dec'"; break;
case binary::hex: cout << "'hex'"; break;
case binary::oct: cout << "'oct'"; break;
case binary::bin: cout << "'bin'"; break;
2014-09-06 22:31:01 +02:00
default: cout << "unknown"; break;
}
cout<<endl<<endl;
}
2014-09-05 09:49:39 +02:00
void std()
{
if (stack_size()>=1)
{
ARG_MUST_BE_OF_TYPE(0, cmd_number);
number::s_default_precision = (int)getf();
2014-09-05 09:49:39 +02:00
}
number::s_current_precision = number::s_default_precision;
number::s_mode = number::std;
2014-09-06 22:31:01 +02:00
cout.precision(number::s_current_precision);
2014-09-05 09:49:39 +02:00
cout.unsetf(ios_base::floatfield);
}
void fix()
{
MIN_ARGUMENTS(1);
ARG_MUST_BE_OF_TYPE(0, cmd_number);
2014-09-05 09:49:39 +02:00
number::s_current_precision = (int)getf();
number::s_mode = number::fix;
2014-09-06 22:31:01 +02:00
cout << setprecision(number::s_current_precision) << fixed;
2014-09-05 09:49:39 +02:00
}
void sci()
{
MIN_ARGUMENTS(1);
ARG_MUST_BE_OF_TYPE(0, cmd_number);
2014-09-05 09:49:39 +02:00
number::s_current_precision = (int)getf();
number::s_mode = number::sci;
2014-09-06 22:31:01 +02:00
cout << setprecision(number::s_current_precision) << scientific;
2014-09-05 09:49:39 +02:00
}
2014-09-24 16:55:59 +02:00
void rpn_version()
{
2015-03-02 18:20:21 +01:00
int naked_entry_len;
int obj_len;
ostring* str;
// entry length without prefix / postfix
naked_entry_len = (int)strlen(version);
// total object length
obj_len = sizeof(ostring)+naked_entry_len+1;
// allocate object
str = (ostring*)malloc(obj_len);
// set it
str->set(version, naked_entry_len);
// push in stack
_stack->push_back(str, str->size(), cmd_string);
free(str);
2014-09-24 16:55:59 +02:00
}
void rpn_uname()
{
2015-03-02 18:20:21 +01:00
int naked_entry_len;
int obj_len;
ostring* str;
// entry length without prefix / postfix
naked_entry_len = (int)strlen(uname);
// total object length
obj_len = sizeof(ostring)+naked_entry_len+1;
// allocate object
str = (ostring*)malloc(obj_len);
// set it
str->set(uname, naked_entry_len);
// push in stack
_stack->push_back(str, str->size(), cmd_string);
free(str);
2014-09-24 16:55:59 +02:00
}