99 |
VMFnResult* CoreVMFunction_wait::exec(VMFnArgs* args) { |
VMFnResult* CoreVMFunction_wait::exec(VMFnArgs* args) { |
100 |
ExecContext* ctx = dynamic_cast<ExecContext*>(vm->currentVMExecContext()); |
ExecContext* ctx = dynamic_cast<ExecContext*>(vm->currentVMExecContext()); |
101 |
VMIntExpr* expr = dynamic_cast<VMIntExpr*>(args->arg(0)); |
VMIntExpr* expr = dynamic_cast<VMIntExpr*>(args->arg(0)); |
102 |
ctx->suspendMicroseconds = expr->evalInt(); |
int us = expr->evalInt(); |
103 |
this->result.flags = STMT_SUSPEND_SIGNALLED; |
if (us < 0) { |
104 |
|
wrnMsg("wait(): argument may not be negative! Aborting script!"); |
105 |
|
this->result.flags = STMT_ABORT_SIGNALLED; |
106 |
|
} else if (us == 0) { |
107 |
|
wrnMsg("wait(): argument may not be zero! Aborting script!"); |
108 |
|
this->result.flags = STMT_ABORT_SIGNALLED; |
109 |
|
} else { |
110 |
|
ctx->suspendMicroseconds = us; |
111 |
|
this->result.flags = STMT_SUSPEND_SIGNALLED; |
112 |
|
} |
113 |
return &result; |
return &result; |
114 |
} |
} |
115 |
|
|
197 |
return successResult(i >> n); |
return successResult(i >> n); |
198 |
} |
} |
199 |
|
|
200 |
|
/////////////////////////////////////////////////////////////////////////// |
201 |
|
// built-in script function: min() |
202 |
|
|
203 |
|
VMFnResult* CoreVMFunction_min::exec(VMFnArgs* args) { |
204 |
|
int l = args->arg(0)->asInt()->evalInt(); |
205 |
|
int r = args->arg(1)->asInt()->evalInt(); |
206 |
|
return successResult(l < r ? l : r); |
207 |
|
} |
208 |
|
|
209 |
|
/////////////////////////////////////////////////////////////////////////// |
210 |
|
// built-in script function: max() |
211 |
|
|
212 |
|
VMFnResult* CoreVMFunction_max::exec(VMFnArgs* args) { |
213 |
|
int l = args->arg(0)->asInt()->evalInt(); |
214 |
|
int r = args->arg(1)->asInt()->evalInt(); |
215 |
|
return successResult(l > r ? l : r); |
216 |
|
} |
217 |
|
|
218 |
} // namespace LinuxSampler |
} // namespace LinuxSampler |