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 "../ScriptType.hpp"
#include "../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<ScriptType> returnType, vector<shared_ptr<ScriptType>> parameterTypes)
: GenericFunctionOption(std::move(returnType), std::move(parameterTypes)) {
2019-06-21 15:03:13 +00:00
}
static UserDataFunctionOption* FromRawPointers(ScriptType* returnType, vector<ScriptType*> parameterTypes){
auto rt = shared_ptr<ScriptType>(returnType);
auto p = vector<shared_ptr<ScriptType>>(parameterTypes.size());
2019-07-25 15:23:54 +00:00
for (size_t i = 0; i < parameterTypes.size(); i++){
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