Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
1 change: 1 addition & 0 deletions src/log_surgeon/finite_automata/PrefixTree.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class PrefixTree {
using position_t = int32_t;

static constexpr id_t cRootId{0};
static constexpr position_t cDefaultPos{0};

PrefixTree() : m_nodes{{std::nullopt, -1}} {}

Expand Down
38 changes: 28 additions & 10 deletions src/log_surgeon/finite_automata/RegisterHandler.hpp
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
#ifndef LOG_SURGEON_FINITE_AUTOMATA_REGISTER_HANDLER_HPP
#define LOG_SURGEON_FINITE_AUTOMATA_REGISTER_HANDLER_HPP

#include <cstddef>
#include <cstdint>
#include <vector>

#include <log_surgeon/finite_automata/PrefixTree.hpp>
#include <log_surgeon/finite_automata/Register.hpp>
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix missing header file.

The pipeline is failing because 'log_surgeon/finite_automata/Register.hpp' cannot be found.

Please ensure that the Register.hpp file is created and properly placed in the finite_automata directory.


namespace log_surgeon::finite_automata {
/**
Expand All @@ -17,28 +18,45 @@ namespace log_surgeon::finite_automata {
*/
class RegisterHandler {
public:
auto add_register(
PrefixTree::id_t const prefix_tree_parent_node_id,
PrefixTree::position_t const position
) -> void {
auto const prefix_tree_node_id{m_prefix_tree.insert(prefix_tree_parent_node_id, position)};
auto add_registers(uint32_t const num_reg_to_add) -> std::vector<uint32_t> {
std::vector<uint32_t> added_registers;
for (uint32_t i{0}; i < num_reg_to_add; ++i) {
added_registers.emplace_back(add_register());
}
return added_registers;
}

auto add_register() -> register_id_t {
auto const prefix_tree_node_id{
m_prefix_tree.insert(PrefixTree::cRootId, PrefixTree::cDefaultPos)
};
m_registers.emplace_back(prefix_tree_node_id);
return m_registers.size() - 1;
}

auto add_register(PrefixTree::id_t const prefix_tree_parent_node_id) -> register_id_t {
auto const prefix_tree_node_id{
m_prefix_tree.insert(prefix_tree_parent_node_id, PrefixTree::cDefaultPos)
};
m_registers.emplace_back(prefix_tree_node_id);
return m_registers.size() - 1;
}

auto set_register(size_t const reg_id, PrefixTree::position_t const position) -> void {
auto set_register(register_id_t const reg_id, PrefixTree::position_t const position) -> void {
m_prefix_tree.set(m_registers.at(reg_id), position);
}

auto copy_register(size_t const dest_reg_id, size_t const source_reg_id) -> void {
auto copy_register(register_id_t const dest_reg_id, register_id_t const source_reg_id) -> void {
m_registers.at(dest_reg_id) = m_registers.at(source_reg_id);
}

auto append_position(size_t const reg_id, PrefixTree::position_t const position) -> void {
auto
append_position(register_id_t const reg_id, PrefixTree::position_t const position) -> void {
auto const node_id{m_registers.at(reg_id)};
m_registers.at(reg_id) = m_prefix_tree.insert(node_id, position);
}

[[nodiscard]] auto get_reversed_positions(size_t const reg_id
[[nodiscard]] auto get_reversed_positions(register_id_t const reg_id
) const -> std::vector<PrefixTree::position_t> {
return m_prefix_tree.get_reversed_positions(m_registers.at(reg_id));
}
Expand Down
8 changes: 5 additions & 3 deletions tests/test-register-handler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,13 @@ namespace {
[[nodiscard]] auto handler_init(size_t num_registers) -> RegisterHandler;

auto handler_init(size_t const num_registers) -> RegisterHandler {
constexpr position_t cDefaultPos{0};

RegisterHandler handler;
for (size_t i{0}; i < num_registers; ++i) {
handler.add_register(i, cDefaultPos);
if (0 == i) {
handler.add_register();
} else {
handler.add_register(i);
}
}
return handler;
}
Expand Down
Loading