73 lines
3.4 KiB
C++
73 lines
3.4 KiB
C++
|
|
#include "typechecker.hpp"
|
||
|
|
|
||
|
|
namespace Solstice {
|
||
|
|
|
||
|
|
void TypeChecker::initOverloads() {
|
||
|
|
addOverloads = {
|
||
|
|
{{BaseType::Int, BaseType::Int}, BaseType::Int},
|
||
|
|
{{BaseType::Double, BaseType::Double}, BaseType::Double},
|
||
|
|
{{BaseType::Int, BaseType::Double}, BaseType::Double},
|
||
|
|
{{BaseType::Double, BaseType::Int}, BaseType::Double},
|
||
|
|
{{BaseType::String, BaseType::String}, BaseType::String},
|
||
|
|
{{BaseType::String, BaseType::Char}, BaseType::String},
|
||
|
|
{{BaseType::Char, BaseType::String}, BaseType::String},
|
||
|
|
{{BaseType::Char, BaseType::Char}, BaseType::Char}
|
||
|
|
};
|
||
|
|
subtractOverloads = {
|
||
|
|
{{BaseType::Int, BaseType::Int}, BaseType::Int},
|
||
|
|
{{BaseType::Double, BaseType::Double}, BaseType::Double},
|
||
|
|
{{BaseType::Int, BaseType::Double}, BaseType::Double},
|
||
|
|
{{BaseType::Double, BaseType::Int}, BaseType::Double},
|
||
|
|
{{BaseType::Char, BaseType::Char}, BaseType::Char}
|
||
|
|
};
|
||
|
|
multiplyOverloads = {
|
||
|
|
{{BaseType::Int, BaseType::Int}, BaseType::Int},
|
||
|
|
{{BaseType::Double, BaseType::Double}, BaseType::Double},
|
||
|
|
{{BaseType::Int, BaseType::Double}, BaseType::Double},
|
||
|
|
{{BaseType::Double, BaseType::Int}, BaseType::Double},
|
||
|
|
{{BaseType::Char, BaseType::Char}, BaseType::Char}
|
||
|
|
};
|
||
|
|
divideOverloads = {
|
||
|
|
{{BaseType::Int, BaseType::Int}, BaseType::Double},
|
||
|
|
{{BaseType::Double, BaseType::Double}, BaseType::Double},
|
||
|
|
{{BaseType::Int, BaseType::Double}, BaseType::Double},
|
||
|
|
{{BaseType::Double, BaseType::Int}, BaseType::Double},
|
||
|
|
{{BaseType::Char, BaseType::Char}, BaseType::Char}
|
||
|
|
};
|
||
|
|
equalOverloads = {
|
||
|
|
{{BaseType::Int, BaseType::Int}, BaseType::Bool},
|
||
|
|
{{BaseType::Double, BaseType::Double}, BaseType::Bool},
|
||
|
|
{{BaseType::Int, BaseType::Double}, BaseType::Bool},
|
||
|
|
{{BaseType::Double, BaseType::Int}, BaseType::Bool},
|
||
|
|
{{BaseType::String, BaseType::String}, BaseType::Bool},
|
||
|
|
{{BaseType::Char, BaseType::Char}, BaseType::Bool},
|
||
|
|
{{BaseType::Bool, BaseType::Bool}, BaseType::Bool},
|
||
|
|
};
|
||
|
|
notEqualOverloads = {
|
||
|
|
{{BaseType::Int, BaseType::Int}, BaseType::Bool},
|
||
|
|
{{BaseType::Double, BaseType::Double}, BaseType::Bool},
|
||
|
|
{{BaseType::Int, BaseType::Double}, BaseType::Bool},
|
||
|
|
{{BaseType::Double, BaseType::Int}, BaseType::Bool},
|
||
|
|
{{BaseType::String, BaseType::String}, BaseType::Bool},
|
||
|
|
{{BaseType::Char, BaseType::Char}, BaseType::Bool},
|
||
|
|
{{BaseType::Bool, BaseType::Bool}, BaseType::Bool},
|
||
|
|
};
|
||
|
|
greaterThanOverloads = {
|
||
|
|
{{BaseType::Int, BaseType::Int}, BaseType::Bool},
|
||
|
|
{{BaseType::Double, BaseType::Double}, BaseType::Bool},
|
||
|
|
{{BaseType::Int, BaseType::Double}, BaseType::Bool},
|
||
|
|
{{BaseType::Double, BaseType::Int}, BaseType::Bool},
|
||
|
|
{{BaseType::Char, BaseType::Char}, BaseType::Bool},
|
||
|
|
};
|
||
|
|
lesserThanOverloads = {
|
||
|
|
{{BaseType::Int, BaseType::Int}, BaseType::Bool},
|
||
|
|
{{BaseType::Double, BaseType::Double}, BaseType::Bool},
|
||
|
|
{{BaseType::Int, BaseType::Double}, BaseType::Bool},
|
||
|
|
{{BaseType::Double, BaseType::Int}, BaseType::Bool},
|
||
|
|
{{BaseType::Char, BaseType::Char}, BaseType::Bool},
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|