Compare commits

..
2 Commits
2 changed files with 22 additions and 8 deletions

No files matched your search

+20 -6
View File
@@ -200,13 +200,25 @@ void DlangVM::Execute(ByteCodeArray bytecode)
auto b = stack.pop(); auto b = stack.pop();
auto a = stack.pop(); auto a = stack.pop();
if (a.type != StackValueType::Int || b.type != StackValueType::Int) if (a.type == StackValueType::Int && b.type == StackValueType::Int)
throw std::runtime_error("LESS_THAN Operation error, not all variables are integer!"); {
stack.push(StackValue(StackValueType::Bool,
std::get<double>(a.data) ==
std::get<double>(b.data)
));
continue;
}
stack.push(StackValue(StackValueType::Bool, if (a.type == StackValueType::String && b.type == StackValueType::String)
std::get<double>(a.data) == {
std::get<double>(b.data) stack.push(StackValue(StackValueType::Bool,
)); std::get<std::string>(a.data) ==
std::get<std::string>(b.data)
));
continue;
}
throw std::runtime_error("COMPARE Operation error, in compatible variables!");
} break; } break;
case Opcodes::GTE: { case Opcodes::GTE: {
@@ -284,6 +296,8 @@ void DlangVM::Execute(ByteCodeArray bytecode)
if (a.type == StackValueType::Int && b.type == StackValueType::Int) { if (a.type == StackValueType::Int && b.type == StackValueType::Int) {
result.data = (std::get<double>(a.data) != std::get<double>(b.data)); result.data = (std::get<double>(a.data) != std::get<double>(b.data));
} else if(a.type == StackValueType::String && b.type == StackValueType::String) {
result.data = (std::get<std::string>(a.data) != std::get<std::string>(b.data));
} }
stack.push(result); stack.push(result);
+2 -2
View File
@@ -12,13 +12,13 @@
inline ModuleManager* pluginManager = nullptr; inline ModuleManager* pluginManager = nullptr;
#define DEBUG_MODE 0 #define DEBUG_MODE 0
#define VERSION "v1.0.37" #define VERSION "v1.0.39"
using ByteCodeArray = std::vector<double>; using ByteCodeArray = std::vector<double>;
class DlangVM class DlangVM
{ {
public: public:
Stack<StackValue, 25> stack; Stack<StackValue, 25> stack;
NamedList<StackValue> globals; NamedList<StackValue> globals;
List<std::string> strings; List<std::string> strings;