38 |
return _unitFactor(prefix1) * _unitFactor(prefix2); |
return _unitFactor(prefix1) * _unitFactor(prefix2); |
39 |
} |
} |
40 |
|
|
41 |
vmfloat VMUnit::unitFactor() const { |
vmfloat VMUnit::unitFactor(const MetricPrefix_t* prefixes, vmuint size) { |
42 |
vmfloat f = 1.f; |
vmfloat f = VM_NO_FACTOR; |
43 |
for (vmuint i = 0; unitPrefix(i); ++i) |
for (vmuint i = 0; i < size && prefixes[i]; ++i) |
44 |
f *= _unitFactor(unitPrefix(i)); |
f *= _unitFactor(prefixes[i]); |
45 |
return f; |
return f; |
46 |
} |
} |
47 |
|
|
48 |
|
bool VMUnit::hasUnitFactorNow() const { |
49 |
|
return unitFactor() != VM_NO_FACTOR; |
50 |
|
} |
51 |
|
|
52 |
/////////////////////////////////////////////////////////////////////// |
/////////////////////////////////////////////////////////////////////// |
53 |
// class 'VMExpr' |
// class 'VMExpr' |
54 |
|
|
80 |
); |
); |
81 |
} |
} |
82 |
|
|
83 |
|
VMArrayExpr* VMExpr::asArray() const { |
84 |
|
return const_cast<VMArrayExpr*>( |
85 |
|
dynamic_cast<const VMArrayExpr*>(this) |
86 |
|
); |
87 |
|
} |
88 |
|
|
89 |
bool VMExpr::isModifyable() const { |
bool VMExpr::isModifyable() const { |
90 |
const VMVariable* var = dynamic_cast<const VMVariable*>(this); |
const VMVariable* var = dynamic_cast<const VMVariable*>(this); |
91 |
return (!var) ? false : var->isAssignable(); |
return (!var) ? false : var->isAssignable(); |
103 |
return false; |
return false; |
104 |
} |
} |
105 |
|
|
106 |
|
void VMFunction::checkArgs(VMFnArgs* args, |
107 |
|
std::function<void(String)> err, |
108 |
|
std::function<void(String)> wrn) |
109 |
|
{ |
110 |
|
} |
111 |
|
|
112 |
void VMFunction::wrnMsg(const String& txt) { |
void VMFunction::wrnMsg(const String& txt) { |
113 |
std::cout << "[ScriptVM] " << txt << std::endl; |
std::cout << "[ScriptVM] " << txt << std::endl; |
114 |
} |
} |
118 |
} |
} |
119 |
|
|
120 |
/////////////////////////////////////////////////////////////////////// |
/////////////////////////////////////////////////////////////////////// |
121 |
|
// class 'VMScalarNumberExpr' |
122 |
|
|
123 |
|
vmint VMScalarNumberExpr::evalCastInt() { |
124 |
|
if (exprType() == INT_EXPR) |
125 |
|
return asInt()->evalInt(); |
126 |
|
else |
127 |
|
return vmint( asReal()->evalReal() ); |
128 |
|
} |
129 |
|
|
130 |
|
vmfloat VMScalarNumberExpr::evalCastReal() { |
131 |
|
if (exprType() == REAL_EXPR) |
132 |
|
return asReal()->evalReal(); |
133 |
|
else |
134 |
|
return vmfloat( asInt()->evalInt() ); |
135 |
|
} |
136 |
|
|
137 |
|
/////////////////////////////////////////////////////////////////////// |
138 |
// class 'VMIntExpr' |
// class 'VMIntExpr' |
139 |
|
|
140 |
vmint VMIntExpr::evalInt(MetricPrefix_t prefix) { |
vmint VMIntExpr::evalInt(MetricPrefix_t prefix) { |