PorygonLang/src/UserData/UserDataFunctionType.hpp

37 lines
1.3 KiB
C++
Raw Normal View History

2019-06-21 15:03:13 +00:00
#ifndef PORYGONLANG_USERDATAFUNCTIONTYPE_HPP
#define PORYGONLANG_USERDATAFUNCTIONTYPE_HPP
#include <utility>
#include "../ScriptTypes/ScriptType.hpp"
#include "../ScriptTypes/FunctionScriptType.hpp"
2019-06-21 15:03:13 +00:00
namespace Porygon::UserData{
class UserDataFunctionOption : public GenericFunctionOption{
2019-06-21 15:03:13 +00:00
public:
UserDataFunctionOption(std::shared_ptr<const ScriptType> returnType, vector<shared_ptr<const ScriptType>> parameterTypes)
: GenericFunctionOption(std::move(returnType), std::move(parameterTypes)) {
2019-06-21 15:03:13 +00:00
}
2019-09-15 11:08:11 +00:00
static UserDataFunctionOption* FromRawPointers(ScriptType* returnType, vector<ScriptType*> parameterTypes){
auto rt = shared_ptr<const ScriptType>(returnType);
auto p = vector<shared_ptr<const ScriptType>>(parameterTypes.size());
2019-07-25 15:23:54 +00:00
for (size_t i = 0; i < parameterTypes.size(); i++){
2019-09-15 11:08:11 +00:00
p[i] = shared_ptr<ScriptType>(parameterTypes[i]);
}
return new UserDataFunctionOption(rt, p);
}
inline static UserDataFunctionOption* FromRawPointers(ScriptType* returnType){
auto rt = shared_ptr<ScriptType>(returnType);
return new UserDataFunctionOption(rt, {});
}
2019-07-25 15:23:54 +00:00
[[nodiscard]] inline bool IsScriptFunction() const final{
2019-06-21 15:03:13 +00:00
return false;
}
};
}
#endif //PORYGONLANG_USERDATAFUNCTIONTYPE_HPP