34 lines
939 B
C++
34 lines
939 B
C++
#ifndef PORYGONLANG_USERDATARETURNVALUE_HPP
|
|
#define PORYGONLANG_USERDATARETURNVALUE_HPP
|
|
|
|
#include "../Evaluator/EvalValues/EvalValue.hpp"
|
|
|
|
extern "C" {
|
|
namespace Porygon::UserData {
|
|
struct UserDataReturnValue {
|
|
bool _success;
|
|
union {
|
|
string _message;
|
|
const Evaluation::EvalValue *_value;
|
|
};
|
|
public:
|
|
UserDataReturnValue(Evaluation::EvalValue *value) : _success(true), _value(value) {}
|
|
UserDataReturnValue(const Evaluation::EvalValue *value) : _success(true), _value(value) {}
|
|
UserDataReturnValue(string message) : _success(false), _message(message) {}
|
|
|
|
~UserDataReturnValue(){
|
|
|
|
}
|
|
|
|
inline const Evaluation::EvalValue *Evaluate() const{
|
|
if (_success) {
|
|
return _value;
|
|
}
|
|
throw Evaluation::EvaluationException(_message);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
|
|
#endif //PORYGONLANG_USERDATARETURNVALUE_HPP
|