summaryrefslogtreecommitdiff
path: root/frontend/result.cc
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/result.cc')
-rw-r--r--frontend/result.cc67
1 files changed, 67 insertions, 0 deletions
diff --git a/frontend/result.cc b/frontend/result.cc
new file mode 100644
index 0000000..aca9c5e
--- /dev/null
+++ b/frontend/result.cc
@@ -0,0 +1,67 @@
+/* Miscellaneous types used across stage boundaries.
+ Copyright (C) 2025 Free Software Foundation, Inc.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#include "elna/frontend/result.h"
+
+namespace elna::frontend
+{
+ error::error(const char *path, const struct position position)
+ : position(position), path(path)
+ {
+ }
+
+ std::size_t error::line() const noexcept
+ {
+ return this->position.line;
+ }
+
+ std::size_t error::column() const noexcept
+ {
+ return this->position.column;
+ }
+
+ error_container::error_container(const char *input_file)
+ : input_file(input_file)
+ {
+ }
+
+ std::deque<std::unique_ptr<error>>& error_container::errors()
+ {
+ return m_errors;
+ }
+
+ bool error_container::has_errors() const
+ {
+ return !m_errors.empty();
+ }
+
+ bool identifier_definition::operator==(const identifier_definition& that) const
+ {
+ return *this == that.name;
+ }
+
+ bool identifier_definition::operator==(const std::string& that) const
+ {
+ return this->name == that;
+ }
+}
+
+std::size_t std::hash<elna::frontend::identifier_definition>::operator()(
+ const elna::frontend::identifier_definition& key) const
+{
+ return std::hash<std::string>{}(key.name);
+}