Run clang-format on project
This commit is contained in:
parent
3eea369072
commit
e0661f9f8f
38
src/Result.h
38
src/Result.h
@ -1,40 +1,52 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "Token.h"
|
|
||||||
#include "Error.h"
|
#include "Error.h"
|
||||||
|
#include "Token.h"
|
||||||
|
|
||||||
// Kinda copying Rust here, but it's a great idea.
|
// Kinda copying Rust here, but it's a great idea.
|
||||||
|
|
||||||
template<typename T>
|
template<typename T> class Result
|
||||||
class Result
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Result() = default;
|
Result() = default;
|
||||||
bool is_error() const { return m_is_error; }
|
bool is_error() const
|
||||||
void ethrow() { Error::throw_error(m_token->loc,m_token->line(),m_error); }
|
{
|
||||||
|
return m_is_error;
|
||||||
|
}
|
||||||
|
void ethrow()
|
||||||
|
{
|
||||||
|
Error::throw_error(m_token->loc, m_token->line(), m_error);
|
||||||
|
}
|
||||||
std::shared_ptr<T> get()
|
std::shared_ptr<T> get()
|
||||||
{
|
{
|
||||||
return m_result;
|
return m_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Token* m_token;
|
Token* m_token;
|
||||||
std::shared_ptr<T> m_result;
|
std::shared_ptr<T> m_result;
|
||||||
bool m_is_error;
|
bool m_is_error;
|
||||||
std::string m_error;
|
std::string m_error;
|
||||||
|
|
||||||
Result(T* result, Token* token) : m_result(result), m_token(token), m_is_error(false) {}
|
Result(T* result, Token* token) : m_result(result), m_token(token), m_is_error(false)
|
||||||
Result(const std::string& error, Token* token) : m_error(std::move(error)), m_token(token), m_is_error(true) {}
|
{
|
||||||
|
}
|
||||||
|
Result(const std::string& error, Token* token) : m_error(std::move(error)), m_token(token), m_is_error(true)
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T> class Ok final : public Result<T>
|
||||||
class Ok final : public Result<T>
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Ok(T* result, Token* token) : Result<T>(result,token) {}
|
Ok(T* result, Token* token) : Result<T>(result, token)
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T> class Err final : public Result<T>
|
||||||
class Err final : public Result<T>
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Err(const std::string& error, Token* token) : Result<T>(std::move(error),token) {}
|
Err(const std::string& error, Token* token) : Result<T>(std::move(error), token)
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
Loading…
Reference in New Issue
Block a user