Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions src/spider/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -194,3 +194,24 @@ target_link_libraries(
)

add_library(spider::spider ALIAS spider_client)

set(SPIDER_TDL_SHARED_SOURCES
tdl/parser/ast/Node.cpp
CACHE INTERNAL
"spider task definition language shared source files"
)

set(SPIDER_TDL_SHARED_HEADERS
tdl/parser/ast/Node.hpp
CACHE INTERNAL
"spider task definition language shared header files"
)

add_library(spider_tdl)
target_sources(spider_tdl PRIVATE ${SPIDER_TDL_SHARED_SOURCES})
target_sources(spider_tdl PUBLIC ${SPIDER_TDL_SHARED_HEADERS})
target_include_directories(spider_tdl PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..)

target_link_libraries(spider_tdl PUBLIC ystdlib::error_handling)

add_library(spider::tdl ALIAS spider_tdl)
23 changes: 23 additions & 0 deletions src/spider/tdl/parser/ast/Node.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#include "Node.hpp"

#include <string>

#include <ystdlib/error_handling/ErrorCode.hpp>

using spider::tdl::parser::ast::Node;
using NodeErrorCodeCategory = ystdlib::error_handling::ErrorCategory<Node::ErrorCodeEnum>;

template <>
auto NodeErrorCodeCategory::name() const noexcept -> char const* {
return "spider::tdl::parser::ast::Node";
}

template <>
auto NodeErrorCodeCategory ::message(Node::ErrorCodeEnum error_enum) const -> std::string {
switch (error_enum) {
case Node::ErrorCodeEnum::PlaceholderError:
return "This is a placeholder error code enum";
default:
return "Unknown error code enum";
}
}
27 changes: 27 additions & 0 deletions src/spider/tdl/parser/ast/Node.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#ifndef SPIDER_TDL_PARSER_AST_NODE_HPP
#define SPIDER_TDL_PARSER_AST_NODE_HPP

#include <cstdint>

#include <ystdlib/error_handling/ErrorCode.hpp>

namespace spider::tdl::parser::ast {
/**
* Abstracted base class for all AST nodes in the TDL.
*/
class Node {
public:
// Types
enum class ErrorCodeEnum : uint8_t {
PlaceholderError = 1,
};

using ErrorCode = ystdlib::error_handling::ErrorCode<ErrorCodeEnum>;

private:
};
} // namespace spider::tdl::parser::ast

YSTDLIB_ERROR_HANDLING_MARK_AS_ERROR_CODE_ENUM(spider::tdl::parser::ast::Node::ErrorCodeEnum);

#endif // SPIDER_TDL_PARSER_AST_NODE_HPP
2 changes: 2 additions & 0 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ set(SPIDER_TEST_SOURCES
storage/test-DataStorage.cpp
storage/test-MetadataStorage.cpp
storage/StorageTestHelper.hpp
tdl/test-parser-ast.cpp
utils/CoreDataUtils.hpp
utils/CoreTaskUtils.hpp
utils/CoreTaskUtils.cpp
Expand Down Expand Up @@ -39,6 +40,7 @@ target_link_libraries(
PRIVATE
spider_core
spider_client
spider_tdl
)
target_link_libraries(
unitTest
Expand Down
18 changes: 18 additions & 0 deletions tests/tdl/test-parser-ast.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// NOLINTBEGIN(cert-err58-cpp,cppcoreguidelines-avoid-do-while,readability-function-cognitive-complexity,cppcoreguidelines-avoid-non-const-global-variables,cppcoreguidelines-avoid-c-arrays,modernize-avoid-c-arrays)

#include <catch2/catch_test_macros.hpp>
#include <ystdlib/error_handling/Result.hpp>

#include <spider/tdl/parser/ast/Node.hpp>

namespace {
TEST_CASE("test-ast-node", "[tdl][ast][Node]") {
using spider::tdl::parser::ast::Node;
using ystdlib::error_handling::Result;

Result<void> const result{Node::ErrorCode{Node::ErrorCodeEnum::PlaceholderError}};
REQUIRE(result.has_error());
}
} // namespace

// NOLINTEND(cert-err58-cpp,cppcoreguidelines-avoid-do-while,readability-function-cognitive-complexity,cppcoreguidelines-avoid-non-const-global-variables,cppcoreguidelines-avoid-c-arrays,modernize-avoid-c-arrays)