9.10.2011 - stable backup commit

This commit is contained in:
peri4
2011-10-09 22:23:52 +04:00
parent 29190ea465
commit 39ec9cac5c
39 changed files with 1170 additions and 512 deletions

View File

@@ -27,11 +27,11 @@ PIConsole::~PIConsole() {
if (isRunning())
stop();
clearTabs(false);
delete listener;
#ifdef WINDOWS
SetConsoleMode(hOut, smode);
SetConsoleTextAttribute(hOut, dattr);
#endif
delete listener;
}
@@ -44,7 +44,7 @@ int PIConsole::addTab(const PIString & name, char bind_key) {
void PIConsole::removeTab(uint index) {
if (index >= tabs.size()) return;
tabs.erase(vector<Tab>::iterator(&tabs[index]));
tabs.remove(index);
if (cur_tab >= tabs.size()) cur_tab = tabs.size() - 1;
}
@@ -211,12 +211,12 @@ PIString PIConsole::fstr(PIFlags<PIConsole::Format> f) {
#define siprint(x) switch (num_format) {case (1): return printf("0x%.4hX", x); break; case (2): return printf("%o", x); break; default: return printf("%hd", x); break;}
#define iprint(x) switch (num_format) {case (1): return printf("0x%.8X", x); break; case (2): return printf("%o", x); break; default: return printf("%d", x); break;}
#define liprint(x) switch (num_format) {case (1): return printf("0x%.16lX", x); break; case (2): return printf("%lo", x); break; default: return printf("%ld", x); break;}
#define lliprint(x) switch (num_format) {case (1): return printf("0x%.16LX", x); break; case (2): return printf("%Lo", x); break; default: return printf("%Ld", x); break;}
#define lliprint(x) switch (num_format) {case (1): return printf("0x%.16llX", x); break; case (2): return printf("%llo", x); break; default: return printf("%lld", x); break;}
#define cuprint(x) switch (num_format) {case (1): return printf("0x%.2X", x); break; case (2): return printf("%o", x); break; default: return printf("%u", x); break;}
#define suprint(x) switch (num_format) {case (1): return printf("0x%.4hX", x); break; case (2): return printf("%o", x); break; default: return printf("%hd", x); break;}
#define uprint(x) switch (num_format) {case (1): return printf("0x%.8X", x); break; case (2): return printf("%o", x); break; default: return printf("%u", x); break;}
#define luprint(x) switch (num_format) {case (1): return printf("0x%.16lX", x); break; case (2): return printf("%lo", x); break; default: return printf("%lu", x); break;}
#define lluprint(x) switch (num_format) {case (1): return printf("0x%.16LX", x); break; case (2): return printf("%Lo", x); break; default: return printf("%Lu", x); break;}
#define lluprint(x) switch (num_format) {case (1): return printf("0x%.16llX", x); break; case (2): return printf("%llo", x); break; default: return printf("%llu", x); break;}
#define fprint(x) switch (num_format) {case (3): return printf("%e", x); break; default: return printf("%.5g", x); break;}
#define dprint(x) switch (num_format) {case (3): return printf("%le", x); break; default: return printf("%.5lg", x); break;}
@@ -271,7 +271,7 @@ void PIConsole::run() {
cx = col_wid * i;
toUpperLeft();
if (my < vars()[i].size()) my = vars()[i].size();
piForeachCA (tv, vars()[i]) {
piForeachC (Variable & tv, vars()[i]) {
moveRight(cx);
if (tv.type == 0 && tv.s == 0) {
newLine();
@@ -279,20 +279,20 @@ void PIConsole::run() {
}
moveRight(tv.offset);
switch (tv.type) {
case 0: clen = printValue(*tv.s, tv.format); break;
case 1: clen = printValue(*tv.b, tv.format); break;
case 2: clen = printValue(*tv.i, tv.format); break;
case 3: clen = printValue(*tv.l, tv.format); break;
case 4: clen = printValue(*tv.c, tv.format); break;
case 5: clen = printValue(*tv.f, tv.format); break;
case 6: clen = printValue(*tv.d, tv.format); break;
case 7: clen = printValue(*tv.sh, tv.format); break;
case 8: clen = printValue(*tv.ui, tv.format); break;
case 9: clen = printValue(*tv.ul, tv.format); break;
case 10: clen = printValue(*tv.ush, tv.format); break;
case 11: clen = printValue(*tv.uc, tv.format); break;
case 12: clen = printValue(*tv.ll, tv.format); break;
case 13: clen = printValue(*tv.ull, tv.format); break;
case 0: clen = printValue(tv.s != 0 ? *tv.s : "", tv.format); break;
case 1: clen = printValue(tv.b != 0 ? *tv.b : false, tv.format); break;
case 2: clen = printValue(tv.i != 0 ? *tv.i : 0, tv.format); break;
case 3: clen = printValue(tv.l != 0 ? *tv.l : 0l, tv.format); break;
case 4: clen = printValue(tv.c != 0 ? *tv.c : 0, tv.format); break;
case 5: clen = printValue(tv.f != 0 ? *tv.f : 0.f, tv.format); break;
case 6: clen = printValue(tv.d != 0 ? *tv.d : 0., tv.format); break;
case 7: clen = printValue(tv.sh != 0 ? *tv.sh : 0, tv.format); break;
case 8: clen = printValue(tv.ui != 0 ? *tv.ui : 0u, tv.format); break;
case 9: clen = printValue(tv.ul != 0 ? *tv.ul : 0ul, tv.format); break;
case 10: clen = printValue(tv.ush != 0 ? *tv.ush : 0u, tv.format); break;
case 11: clen = printValue(tv.uc != 0 ? *tv.uc : 0u, tv.format); break;
case 12: clen = printValue(tv.ll != 0 ? *tv.ll : 0l, tv.format); break;
case 13: clen = printValue(tv.ull != 0 ? *tv.ull : 0ull, tv.format); break;
case 14: clen = printValue(bitsValue(tv.ptr, tv.bitFrom, tv.bitCount), tv.format); break;
}
if (clen + tv.offset < (uint)col_wid) {
@@ -443,27 +443,21 @@ void PIConsole::addEmptyLine(int column, uint count) {
PIString PIConsole::getString(int x, int y) {
bool run = isRunning();
if (run) PIThread::stop(true);
listener->terminate();
msleep(10);
listener->setActive(false);
moveTo(x, y);
showCursor();
PIByteArray ba(4096);
fflush(0);
scanf("%s", ba.data());
//fflush(0);
listener->start();
msleep(10);
if (run) start();
msleep(10);
int ret = scanf(" %s", ba.data());
listener->setActive(true);
return PIString(ba);
if (run) start();
if (ret >= 1) return PIString(ba);
else return PIString();
}
PIString PIConsole::getString(const PIString & name) {
piForeachCA (i, tabs[cur_tab].variables)
piForeachCA (j, i)
piForeachC (PIVector<Variable> & i, tabs[cur_tab].variables)
piForeachC (Variable & j, i)
if (j.name == name)
return getString(j.nx + 1, j.ny);
return PIString();