//datei-name: binOp.cpp
#include "baum.h"
extern Output* outputWindow;
void Baum::binOp(char op)
{ char typ, typ1, typ2;
--varI; typ2 = varTyp[varI]; y = varWert[varI];
--varI; typ1 = varTyp[varI]; x = varWert[varI];
if (typ1 == 'l') typ1 = 'i';
else if (typ1 == 'L') typ1 = 'I';
else if (typ1 == 'f') typ1 = 'd';
if (typ1 == 'd')
{ dop = (double*)x; dd = *dop; }
if (typ2 == 'l') typ2 = 'i';
else if (typ2 == 'L') typ2 = 'I';
else if (typ2 == 'f') typ2 = 'd';
if (typ2 == 'd')
{ dop1 = (double*)y; dd1 = *dop1; }
// '&' & '|' sind mit jedem typ m�lich
if (op == '&')
{ if (typ1 == 'd')
{ if (dd) x = 1;
else x = 0; }
if (typ2 == 'd')
{ if (dd1) y = 1;
else y = 0; }
varWert[varI] = x && y;
return; }
if (op == '|')
{ if (typ1 == 'd')
{ if (dd) x = 1;
else x = 0; }
if (typ2 == 'd')
{ if (dd1) y = 1;
else y = 0; }
varWert[varI] = x || y;
return; }
// automatisch casten
typ = 0;
if (typ1 != typ2)
{ if (typ1 == 'c' || typ1 == 'C' || typ1 == 'i' || typ1 == 'I')
{ if (typ2 == 'c' || typ2 == 'C' || typ2 == 'i' || typ2 == 'I') goto switchOp; }
if (typ1 == 'd')
{ if (typ2 == 'i' || typ2 == 'I')
{ typ = 1; dd1 = y; } }
if (typ2 == 'd')
{ if (typ1 == 'i' || typ1 == 'I')
{ typ = 1; typ1 = 'd'; dd = x; } }
if (typ1 == '^' && (typ2 == 'c' || typ2 == 'C' || typ2 == 'i' || typ2 == 'I')) typ = 2;
if (! typ)
{ err = iK;
cout << typ1 << ' ' << op << ' ' << typ2 << " sind typ-maessig inkompatibel!" << endl;
return; }
if (typ == 2) typ = 0; }
else if (typ1 == 'd') typ = 1;
if (typ)
{ varWert[varI] = gp; varTyp[varI] = 'd';
dop = (double*)gp; gp += 8; }
switchOp:
switch (op)
{ case '+':
if (typ) *dop = dd + dd1;
else varWert[varI] = x + y;
return;
case '-':
if (typ) *dop = dd - dd1;
else varWert[varI] = x - y;
return;
case '*':
if (typ) *dop = dd * dd1;
else varWert[varI] = x * y;
return;
case '/':
if (typ) *dop = dd / dd1;
else varWert[varI] = x / y;
return;
case '%':
if (typ || typ2 == 'd')
{ err = iK;
cout << typ1 << '%' << typ2 << " geht leider nicht!" << endl;
return; }
varWert[varI] = x % y;
return;
case '?':
if (typ) *dop = dd == dd1;
else varWert[varI] = x == y;
typ1 = 'i'; return;
case '':
if (typ) *dop = dd != dd1;
else varWert[varI] = x != y;
typ1 = 'i'; return;
case '<':
if (typ) *dop = dd < dd1;
else varWert[varI] = x < y;
typ1 = 'i'; return;
case '>':
if (typ) *dop = dd > dd1;
else varWert[varI] = x > y;
typ1 = 'i'; return;
case '':
if (typ) *dop = dd <= dd1;
else varWert[varI] = x <= y;
typ1 = 'i'; return;
case '':
if (typ) *dop = dd >= dd1;
else varWert[varI] = x >= y;
typ1 = 'i'; } }
void Baum::neg()
{ --varI;
switch(varTyp[varI])
{ case 'c':
varWert[varI] *= (-1); break;
case 'i': case 'l':
varWert[varI] *= (-1); break;
case 'd':
*(double*)varWert[varI] *= (-1); break;
default:
err = iK; cout << "neg geht leider nicht!" << endl; return; }
++varI; }
void Baum::not1()
{ --varI;
switch(varTyp[varI])
{ case 'c': case 'C': case 'i': case 'I': case 'A': case 'K': case 'B': case 'l':
varWert[varI] = (! varWert[varI]); break;
default:
cout << "not1 geht leider nicht!" << endl; return; }
++varI; }
void Baum::f0()
// atom wortI(char* string)
{ --varI; varWert[varI] = wortI((char*)varWert[varI]); varTyp[varI] = 'A'; ++varI; }
void Baum::f1()
// knot sBau(int sl, int sr, uchar t1, uchar t2, uchar v)
{ int sl, sr; unsigned char t1, t2, v;
--varI; v = varWert[varI];
--varI; t2 = varWert[varI];
--varI; t1 = varWert[varI];
--varI;
if (varTyp[varI] == 'p') sr = wortI((char*)varWert[varI]);
else sr = varWert[varI];
--varI;
if (varTyp[varI] == 'p') sl = wortI((char*)varWert[varI]);
else sl = varWert[varI];
varWert[varI] = sBau(sl, sr, t1, t2, v); varTyp[varI] = 'K'; ++varI; }
void Baum::f2()
// void umbau(int i, int um, uchar t)
{ int i, um; unsigned char t;
--varI; t = varWert[varI];
--varI; um = varWert[varI];
--varI; i = varWert[varI];
umbau(i, 'l', um , t);}
void Baum::f3()
// void umbau(int i, int um, uchar t)
{ int i, um; unsigned char t;
--varI; t = varWert[varI];
--varI; um = varWert[varI];
--varI; i = varWert[varI];
umbau(i, 'r', um , t);}
void Baum::f4()
// void anbauLl(int i, int an, uchar t, uchar v)
{ int i, an; unsigned char t, v;
--varI; v = varWert[varI];
--varI; t = varWert[varI];
--varI; an = varWert[varI];
--varI; i = varWert[varI];
anbauLl(i, an, t, v); }
void Baum::f5()
// void anbauLr(int i, int an, uchar t, uchar v)
{ int i, an; unsigned char t, v;
--varI; v = varWert[varI];
--varI; t = varWert[varI];
--varI; an = varWert[varI];
--varI; i = varWert[varI];
anbauLr(i, an, t, v); }
void Baum::f6()
// void anbauRl(int i, int an, uchar t, uchar v)
{ int i, an; unsigned char t, v;
--varI; v = varWert[varI];
--varI; t = varWert[varI];
--varI; an = varWert[varI];
--varI; i = varWert[varI];
anbauRl(i, an, t, v); }
void Baum::f7()
// void anbauRr(int i, int an, uchar t, uchar v)
{ int i, an; unsigned char t, v;
--varI; v = varWert[varI];
--varI; t = varWert[varI];
--varI; an = varWert[varI];
--varI; i = varWert[varI];
anbauRr(i, an, t, v); }
void Baum::f8()
// void abbauLl(int wrzl)
{ int i;
--varI; i = varWert[varI];
abbauLl(i); }
void Baum::f9()
// void abbauLr(int wrzl)
{ int i;
--varI; i = varWert[varI];
abbauLr(i); }
void Baum::f10()
// void abbauRl(int wrzl)
{ int i;
--varI; i = varWert[varI];
abbauRl(i); }
void Baum::f11()
// void abbauRr(int wrzl)
{ int i;
--varI; i = varWert[varI];
abbauRr(i); }
void Baum::f12()
// knot getLKnot(char*)
{ int i;
--varI; i = wortI((char*)varWert[varI]);
varWert[varI] = vLSatz(i); varTyp[varI] = 'K'; ++varI; }
void Baum::f13()
// knot setLabel(char*, knot)
{ int i;
if (rTyp == 's')
{ --varI; i = varWert[varI];
--varI; varWert[varI] = CntrlL(i, (char*)varWert[varI]);
varTyp[varI] = 'K'; ++varI; return; }
else
{ cout << "setLabel setzt satz voraus" << endl; } }
void Baum::f14()
// char getLoc()
{ varWert[varI] = loc; varTyp[varI] = 'c';
++varI; }
void Baum::f15()
// void setLoc(char)
{ --varI; loc = varWert[varI]; }
void Baum::f16()
// int getRoot()
{ varWert[varI] = root;
if (rTyp == 'w') varTyp[varI] = 'A';
else if (rTyp == 's') varTyp[varI] = 'K';
else varTyp[varI] = 'i';
++varI; }
void Baum::f17()
// void setRoot(int, char)
{ --varI; rTyp = varWert[varI]; --varI; root = varWert[varI]; }
void Baum::f18()
// char getRTyp()
{ varWert[varI] = rTyp; varTyp[varI] = 'c'; ++varI; }
void Baum::f19()
// void setV(int, char)
{ int i; unsigned char v;
--varI; v = varWert[varI];
--varI; i = varWert[varI];
s[i].v = v; }
void Baum::f20()
// void signal(knot)
{ --varI; setSignal(varWert[varI]); }
void Baum::f21()
// int getSignal()
{ varWert[varI] = fifo[fifoTop]; varTyp[varI] = 'i'; ++varI;
if (!fifo[fifoTop]) cout << "no signal in fifo" << endl; }
void Baum::f22()
// void signalSuccess(char)
{ --varI; signalSuccess(varWert[varI]); }
void Baum::f23()
// void addSlot(knot)
{ --varI; addSlot(varWert[varI]); }
void Baum::f24()
// void delSlot(knot)
{ --varI; delSlot(varWert[varI]); }
void Baum::f25()
// void repaint()
{ bildneu(); }
void Baum::f26()
// int val(char*)
{ --varI; varWert[varI] = atoi((char*)varWert[varI]); varTyp[varI] = 'i'; ++varI; }
void Baum::f27()
// char* str(int)
{ --varI; sprintf(tex,"%d", varWert[varI]);
varWert[varI] = (int)tex; varTyp[varI] = 'p'; ++varI; }
void Baum::f28()
// void strcat(char*, char*)
{ char* p1, *p2;
--varI; p2 = (char*)varWert[varI]; --varI; p1 = (char*)varWert[varI]; strcat(p1, p2); }
void Baum::f29()
// int strcmp(char*, char*)
{ char* p1, *p2;
--varI; p2 = (char*)varWert[varI]; --varI; p1 = (char*)varWert[varI]; varWert[varI] = strcmp(p1, p2); varI++; }
void Baum::f30()
// int strcpy(char*, char*)
{ char* p1, *p2;
--varI; p2 = (char*)varWert[varI]; --varI; p1 = (char*)varWert[varI]; strcpy(p1, p2);}
void Baum::f31()
// int strlen(char*)
{ --varI; varWert[varI] = strlen((char*)varWert[varI]); varTyp[varI] = 'i'; ++varI; }
void Baum::f32()
// int getClip(int)
{ --varI; varWert[varI] = clip[varWert[varI]]; varTyp[varI] = 'i'; ++varI; }
void Baum::f33()
// char getClipTyp(int)
{ --varI; varWert[varI] = clipTyp[varWert[varI]]; varTyp[varI] = 'c'; ++varI; }
void Baum::f34()
// void setClip(int, char) F9-Emulation
{ clapTyp[0] = clipTyp[0]; clap[0] = clip[0];
--varI; clipTyp[0] = varWert[varI];
--varI; clip[0] = varWert[varI]; }
void Baum::f35()
// void clear()
{ system("clear"); }
void Baum::f36()
// double sin(double)
{ --varI;
if (varTyp[varI] != 'd') convTyp(varI, 'd');
dop = (double*)varWert[varI]; dd = *dop;
*dop = sin(dd); ++varI; }
void Baum::f37()
{ --varI;
// double cos(double)
if (varTyp[varI] != 'd') convTyp(varI, 'd');
dop = (double*)varWert[varI]; dd = *dop;
*dop = cos(dd); ++varI; }
void Baum::f38()
// double tan(double)
{ --varI;
if (varTyp[varI] != 'd') convTyp(varI, 'd');
dop = (double*)varWert[varI]; dd = *dop;
*dop = tan(dd); ++varI; }
void Baum::f39()
// double asin(double)
{ --varI;
if (varTyp[varI] != 'd') convTyp(varI, 'd');
dop = (double*)varWert[varI]; dd = *dop;
if ( dd >= -1.0 && dd <= 1.0)
{ *dop = asin(dd); ++varI; }
else cout << "calc error: asin < -1.0 or > 1.0" << endl; }
void Baum::f40()
// double acos(double)
{ --varI;
if (varTyp[varI] != 'd') convTyp(varI, 'd');
dop = (double*)varWert[varI]; dd = *dop;
if (dd >= -1.0 && dd <= 1.0)
{ *dop = acos(dd); ++varI; }
else cout << "calc error: acos < -1.0 or > 1.0" << endl; }
void Baum::f41()
// double atan(double)
{ --varI;
if (varTyp[varI] != 'd') convTyp(varI, 'd');
dop = (double*)varWert[varI]; dd = *dop;
if (dd >= -3.141592654 && dd <= 3.141592654)
{ *dop = atan(dd); ++varI; }
else cout << "calc error: atan < -pi or > pi" << endl; }
void Baum::f42()
// double sinh(double)
{ --varI;
if (varTyp[varI] != 'd') convTyp(varI, 'd');
dop = (double*)varWert[varI]; dd = *dop;
*dop = sinh(dd); ++varI; }
void Baum::f43()
// double cosh(double)
{ --varI;
if (varTyp[varI] != 'd') convTyp(varI, 'd');
dop = (double*)varWert[varI]; dd = *dop;
*dop = cosh(dd); ++varI; }
void Baum::f44()
// double tanh(double)
{ --varI;
if (varTyp[varI] != 'd') convTyp(varI, 'd');
dop = (double*)varWert[varI]; dd = *dop;
*dop = tanh(dd); ++varI; }
void Baum::f45()
// double ln(double)
{ --varI;
if (varTyp[varI] != 'd') convTyp(varI, 'd');
dop = (double*)varWert[varI]; dd = *dop;
if (dd > 0.0)
{ *dop = log(dd); ++varI; }
else cout << "calc error: ln <= 0" << endl; }
void Baum::f46()
// double log(double)
{ --varI;
if (varTyp[varI] != 'd') convTyp(varI, 'd');
dop = (double*)varWert[varI]; dd = *dop;
if (dd > 0.0)
{ *dop = log10(dd); ++varI; }
else cout << "calc error: log10 <= 0" << endl; }
void Baum::f47()
// double exp(double)
{ --varI;
if (varTyp[varI] != 'd') convTyp(varI, 'd');
dop = (double*)varWert[varI]; dd = *dop;
*dop = exp(dd);
++varI; }
void Baum::f48()
// double sqrt(double)
{ --varI;
if (varTyp[varI] != 'd') convTyp(varI, 'd');
if (dd >= 0.0)
{ *dop = sqrt(dd); ++varI; }
else cout << "calc error: sqrt < 0" << endl; }
void Baum::f49()
// double abs(double)
{ --varI;
if (varTyp[varI] != 'd') convTyp(varI, 'd');
dop = (double*)varWert[varI]; dd = *dop;
*dop = fabs(dd); ++varI; }
void Baum::f50()
// double pi()
{ varWert[varI] = gp; gp += 8;
*dop = 3.141592654; varTyp[varI] = 'd'; ++varI; }
void Baum::f51()
// char vartyp(int)
{ int i;
--varI; i = varWert[varI];
varWert[varI] = vartyp(i); varTyp[varI] = 'c';
++varI; }
void Baum::f52()
// void tlz(int alt, int neu, char tAlt, char tNeu)
{ int sl, sr; unsigned char t1, t2;
--varI; t2 = varWert[varI]; --varI; t1 = varWert[varI];
--varI; sr = varWert[varI]; --varI; sl = varWert[varI];
tlz(sl, sr, t1, t2); }
void Baum::f53()
// knot getBVar(char*)
{ int i;
--varI; i = wortI((char*)varWert[varI]); i = vLSatz(i); i = s[i].sr;
if (s[i].t2 == 'w') varWert[varI] = atoi(w[s[i].sr].st);
else varWert[varI] = s[i].sr;
varTyp[varI] = 'i'; ++varI; }
void Baum::f54()
// setBVar(int, char*)
{ int i, sr;
--varI; sr = wortI((char*)varWert[varI]); sr = vLSatz(sr); sr = s[sr].sr;
--varI; i = varWert[varI]; s[sr].sr = i; s[sr].t2 = 'i'; }
void Baum::f55()
// void openWindow()
{ outputWindow->outputShow(); }
void Baum::f56()
// void closeWindow()
{ outputWindow->outputHide(); }
void Baum::f57()
// void clearWindow()
{ outputWindow->outputClear(); }
void Baum::f58()
// resizeWindow(int x, int y, int breite, int hoehe)
{ --varI; outputWindow->param[3] = varWert[varI];
--varI; outputWindow->param[2] = varWert[varI];
--varI; outputWindow->param[1] = varWert[varI];
--varI; outputWindow->param[0] = varWert[varI];
outputWindow->outputResize(outputWindow->param[0], outputWindow->param[1], outputWindow->param[2], outputWindow->param[3]);}
void Baum::f59()
// drawLine(int x1, int y1, int x2, int y2)
{ --varI; outputWindow->param[3] = varWert[varI];
--varI; outputWindow->param[2] = varWert[varI];
--varI; outputWindow->param[1] = varWert[varI];
--varI; outputWindow->param[0] = varWert[varI];
outputWindow->command = 1; outputWindow->repaint(); }
void Baum::f60()
// setBrush(int r, int g, int b)
{ --varI; outputWindow->param[2] = varWert[varI];
--varI; outputWindow->param[1] = varWert[varI];
--varI; outputWindow->param[0] = varWert[varI];
outputWindow->command = 2; outputWindow->repaint(); }
void Baum::f61()
// setPen(int r, int g, int b)
{ --varI; outputWindow->param[2] = varWert[varI];
--varI; outputWindow->param[1] = varWert[varI];
--varI; outputWindow->param[0] = varWert[varI];
outputWindow->command = 3; outputWindow->repaint(); }
void Baum::f62()
// drawRect(int x1, int y1, int breite, int hoehe)
{ --varI; outputWindow->param[3] = varWert[varI];
--varI; outputWindow->param[2] = varWert[varI];
--varI; outputWindow->param[1] = varWert[varI];
--varI; outputWindow->param[0] = varWert[varI];
outputWindow->command = 4; outputWindow->repaint(); }
void Baum::f63()
// drawText(int x1, int y1, int breite, int hoehe, char* string)
{ --varI; strcpy(outputWindow->ostring, (char*)varWert[varI]);
--varI; outputWindow->param[3] = varWert[varI];
--varI; outputWindow->param[2] = varWert[varI];
--varI; outputWindow->param[1] = varWert[varI];
--varI; outputWindow->param[0] = varWert[varI];
outputWindow->command = 5; outputWindow->repaint(); }
void Baum::f64()
// drawEllipse(int x1, int y1, int breite, int hoehe)
{ --varI; outputWindow->param[3] = varWert[varI];
--varI; outputWindow->param[2] = varWert[varI];
--varI; outputWindow->param[1] = varWert[varI];
--varI; outputWindow->param[0] = varWert[varI];
outputWindow->command = 6; outputWindow->repaint(); }
void Baum::f65()
// setFont(char* fontname, int groesse, int typ)
{ --varI; outputWindow->fonttyp = varWert[varI]; // typ = 0 Normal typ = 1 Bold
if (outputWindow->fonttyp == 0) outputWindow->fonttyp = QFont::Normal;
else if (outputWindow->fonttyp == 1) outputWindow->fonttyp = QFont::Bold;
--varI; outputWindow->fontsize = varWert[varI];
--varI; strcpy(outputWindow->fontname, (char*)varWert[varI]); }
void Baum::f66()
// void savePicture(char* path)
{ --varI; strcpy(outputWindow->ostring, (char*)varWert[varI]); outputWindow->command = 7; }
void Baum::f67()
// void loadPicture(char* path)
{ --varI; strcpy(outputWindow->ostring, (char*)varWert[varI]); outputWindow->command = 8; outputWindow->repaint(); }
void Baum::f68()
// void setCaption(char* titel)
{ --varI; strcpy(outputWindow->ostring, (char*)varWert[varI]); outputWindow->command = 9; outputWindow->repaint(); }
void Baum::f69()
// void print(term) void print(variant)
{ --varI;
switch(varTyp[varI])
{ case 'p': case '^':
sprintf(outputWindow->ostring, "%s", (char*)varWert[varI]); break;
case 'i': case 'K': case 'B': case 'l': case 'D':
sprintf(outputWindow->ostring, "%i", varWert[varI]); break;
case 'c':
sprintf(outputWindow->ostring, "%c", varWert[varI]); break;
case 'C':
sprintf(outputWindow->ostring, "%u", varWert[varI]); break;
case 'A':
sprintf(outputWindow->ostring, "%s", w[varWert[varI]].st); break;
case 'I':
sprintf(outputWindow->ostring, "%ui", varWert[varI]); break;
case 'd':
dop = (double*)varWert[varI];
sprintf(outputWindow->ostring, "%f", *dop); break;
case 'P':
sprintf(outputWindow->ostring, "%i", *(int*)varWert[varI]); }
if (! outputWindow->isVisible())
{ outputWindow->command = 0; outputWindow->outputShow(); }
outputWindow->command = 10; outputWindow->repaint(); }
void Baum::f70()
// void input(char*, var)
{ QString z; bool ok;
char* p;
char t; int k;
varI -= 2; ok = false;
z = QInputDialog::getText("input:", (char*)varWert[varI], QLineEdit::Normal, QString::null, &ok, this);
if (ok)
{ strcpy(inputtext, z);
t = varTyp[varI + 1];
switch(t)
{ case 'c':
varTyp[varI] = 'c'; varWert[varI] = (char) atoi(inputtext); break;
case 'i': case 'l':
varTyp[varI] = 'i'; varWert[varI] = atoi(inputtext); break;
case 'I': case 'L':
varTyp[varI] = 'I'; varWert[varI] = (unsigned int) atoi(inputtext); break;
case 'C':
varTyp[varI] = 'C'; varWert[varI] = (unsigned char) atoi(inputtext); break;
case '^': case 'p':
varTyp[varI] = t; varWert[varI] = (int)inputtext; break;
case 'd':
varTyp[varI] = t; varWert[varI] = gp; dop = (double*)gp; *dop = atof(inputtext);
gp += 8; break;
case 'D': err = iR; cout << "f70(typ D)" << endl; return; }
++varI;
k = s[s[iR].sl].sr;
lWert(k);
if (t == 'p' || t== '^')
{ --varI; dP = (int*)varWert[varI]; p = (char*)*dP;
--varI; strcpy(p, (char*)varWert[varI]); }
else setWert(); } }
void Baum::f71()
// char* strstr(char*, char*)
{ char* p1, *p2;
--varI; p2 = (char*)varWert[varI]; --varI; p1 = (char*)varWert[varI];
varWert[varI] = (int)strstr(p1, p2); varTyp[varI] = 'p'; ++varI; }
void Baum::f72()
// char* time()
{ time(&zeit);
strcpy(tex, ctime(&zeit));
varWert[varI] = (int)tex; varTyp[varI] = 'p'; ++varI; }
void Baum::f73()
// double valf(char*)
{ --varI;
*dop = atof((char*)varWert[varI]); varTyp[varI] = 'd';
++varI; }
void Baum::f74()
// void srand(int)
{ --varI; srand(varWert[varI]); }
void Baum::f75()
// int rand()
{ varWert[varI] = rand(); varTyp[varI] = 'i'; ++varI; }
void Baum::f76()
// binary and variant and(variant, variant)
{ --varI; --varI;
if (varTyp[varI] == 'i') varWert[varI] = varWert[varI] & varWert[varI + 1];
else if (varTyp[varI] == 'c') varWert[varI] = varWert[varI] & varWert[varI + 1];
else if (varTyp[varI] == 'I') varWert[varI] = varWert[varI] & varWert[varI + 1];
else if (varTyp[varI] == 'C') varWert[varI] = varWert[varI] & varWert[varI + 1];
++varI; }
void Baum::f77()
// binary or variant or(variant, variant)
{ --varI; --varI;
if (varTyp[varI] == 'i') varWert[varI] = varWert[varI] | varWert[varI + 1];
else if (varTyp[varI] == 'c') varWert[varI] = varWert[varI] | varWert[varI + 1];
else if (varTyp[varI] == 'I') varWert[varI] = varWert[varI] | varWert[varI + 1];
else if (varTyp[varI] == 'C') varWert[varI] = varWert[varI] | varWert[varI + 1];
++varI; }
void Baum::f78()
// binary xor variant xor(variant, variant)
{ --varI; --varI;
if (varTyp[varI] == 'i') varWert[varI] = varWert[varI] ^ varWert[varI + 1];
else if (varTyp[varI] == 'c') varWert[varI] = varWert[varI] ^ varWert[varI + 1];
else if (varTyp[varI] == 'I') varWert[varI] = varWert[varI] ^ varWert[varI + 1];
else if (varTyp[varI] == 'C') varWert[varI] = varWert[varI] ^ varWert[varI + 1];
++varI; }
void Baum::f79()
// binary cpl variant cpl(variant)
{ --varI;
if (varTyp[varI] == 'i') varWert[varI] = ~ varWert[varI];
else if (varTyp[varI] == 'c') varWert[varI] = ~ varWert[varI];
else if (varTyp[varI] == 'I') varWert[varI] = ~ varWert[varI];
else if (varTyp[varI] == 'C') varWert[varI] = ~ varWert[varI];
++varI; }
void Baum::f80()
// binary shl variant shl(variant)
{ --varI;
if (varTyp[varI] == 'I') varWert[varI] = varWert[varI] << 1;
else if (varTyp[varI] == 'C') varWert[varI] = varWert[varI] << 1;
++varI; }
void Baum::f81()
// binary shr variant shr(variant)
{ --varI;
if (varTyp[varI] == 'I') varWert[varI] = varWert[varI] >> 1;
else if (varTyp[varI] == 'C') varWert[varI] = varWert[varI] >> 1;
++varI; }
void Baum::f82()
// char isDay(char*)
{ --varI;
if (isDay((char*)varWert[varI])) varWert[varI] = 1;
else varWert[varI] = 0;
varTyp[varI] = 'c';
++varI; }
void Baum::f83()
// int copyBaum(int)
{ --varI; varWert[varI] = CntrlW(varWert[varI]);
varTyp[varI] = 'K'; ++varI; }
void Baum::f84()
{ clearLOC(); }
void Baum::f85()
// void save(char*, char*, int)
{ char *datName, *datStart;
int datLen;
--varI; datLen = varWert[varI];
--varI; datStart = (char*)varWert[varI];
--varI; datName = (char*)varWert[varI];
save(datName, datStart, datLen); }
void Baum::f86()
// void load(char*, char*)
{ char *datName, *datStart;
--varI; datStart = (char*)varWert[varI];
--varI; datName = (char*)varWert[varI];
load(datName, datStart); }
void Baum::f87()
{ char *datName;
--varI; datName = (char*)varWert[varI];
varWert[varI] = fTell(datName);
varTyp[varI] = 'i'; ++varI; }
void Baum::f88()
// void swap(int)
{ int i;
--varI; i = varWert[varI]; CntrlU(i); }
void Baum::f89()
// void tScan(char*)
{ --varI; tScan((char*)varWert[varI]); }
void Baum::f90()
// void remove(int, uchar) F6
{ int i; unsigned char t;
--varI; v = varWert[varI];
--varI; t = varWert[varI];
F6(i,t); }
char Baum::vartyp(int t)
{ if (t == char_ || t == int_ || t == long_ || t == float_ || t == double_ ||
t == atom_ || t == knot_ || t == back_ ||
t == uchar_ || t == uint_ || t == ulong_ || t == FILE_) return 1;
return 0; }
void Baum::save(char* datName, char* datStart, int datLen)
{ FILE* stream;
stream = fopen(datName, "wb");
if (! stream) return;
fwrite (datStart, 1, datLen, stream);
fclose(stream); }
void Baum::load(char* datName, char* datStart)
{ FILE* stream;
int datLen;
stream = fopen(datName, "rb");
if (! stream) return;
fseek(stream, 0, SEEK_END);
datLen = ftell(stream);
fseek(stream, 0, SEEK_SET);
fread (datStart, 1, datLen, stream); fclose(stream); }
int Baum::fTell(char* datName)
{ FILE* stream;
int datLen;
stream = fopen(datName, "rb");
if (! stream) return 0;
fseek(stream, 0, SEEK_END);
datLen = ftell(stream);
fclose(stream);
return datLen; }
back to
baumC