// Last updated: December 28th, 2011
// ========================================
-string rpn_pop()
+string rpn_pop()
{
if(rpn_sp > 0) {
--rpn_sp;
return "";
}
}
-void rpn_push(string s)
+void rpn_push(string s)
{
if(rpn_sp < MAX_RPN_STACK) {
rpn_stack[rpn_sp] = s;
rpn_error = TRUE;
}
}
-string rpn_get()
+string rpn_get()
{
if(rpn_sp > 0) {
return rpn_stack[rpn_sp - 1];
return "";
}
}
-void rpn_set(string s)
+void rpn_set(string s)
{
if(rpn_sp > 0) {
rpn_stack[rpn_sp - 1] = s;
float i, j, f, f2, f3, rpnpos;
//vector rgb;
string s, s2, rpncmd;
-
+
if(!rpn_db)
{
rpn_db = db_create();
db_put(rpn_db, "stack.pointer", "0");
db_put(rpn_db, "stack.pos", "-1");
}
-
+
if(argc >= 2)
{
rpn_sp = 0;
rpn_setf(bound(f3, f2, f));
} else if(rpncmd == "when") {
f = rpn_popf();
- f2 = rpn_popf();
- f3 = rpn_getf();
+ s = rpn_pop();
+ s2 = rpn_get();
if(f)
- rpn_setf(f3);
+ rpn_set(s2);
else
- rpn_setf(f2);
+ rpn_set(s);
} else if(rpncmd == ">" || rpncmd == "gt") {
f = rpn_popf();
rpn_setf(rpn_getf() > f);
print("rpn: database underflow\n");
}
} else if(rpncmd == "dbget") {
-
+
i = stof(db_get(rpn_db, "stack.pointer"));
if(i)
{
{
j = stof(db_get(rpn_db, "stack.pointer"));
i = stof(db_get(rpn_db, "stack.pos"));
-
+
if(i < 0)
{
i = 0;
db_put(rpn_db, "stack.pos", "0");
}
-
+
db_put(rpn_db, "stack.pointer", ftos(j+1));
for(--j; j >= i; --j)
{
i = 0;
else
i = stof(s);
-
+
j = stof(db_get(rpn_db, "stack.pointer"));
if(i < 0 || i >= j)
{
// tokens f..f2 represent s2
// UNION: add all tokens to s that are in s2 but not in s
s = "";
- for(i = 0; i < f; ++i)
+ for(i = 0; i < f; ++i)
s = strcat(s, " ", argv(i));
for(i = f; i < f2; ++i) {
for(j = 0; j < f; ++j)
} else if(rpncmd == "sprintf1s") {
s = rpn_pop();
rpn_set(sprintf(s, rpn_get()));
+ } else if(rpncmd == "eval") {
+ s = rpn_pop();
+ command = strcat(s, substring(command, argv_end_index(rpnpos), -1));
+ argc = tokenize_console(command);
+ rpnpos = -1;
} else {
rpn_push(cvar_string(rpncmd));
}
return;
}
-
+
default:
case CMD_REQUEST_USAGE:
{
print(" s /MD4 digest ---------------------> s : MD4 digest\n");
print(" s /SHA256 digest ------------------> s : SHA256 digest\n");
print(" s /formatstring sprintf1s ---------> s : sprintf with 1 string (pad, cut)\n");
+ print(" s eval ----------------------------> : does something eval\n");
print(" Set operations operate on 'such''strings'.\n");
print(" Unknown tokens insert their cvar value.\n");
return;