diff --git a/sbg/Makefile.include b/sbg/Makefile.include
index c17a937..9812d12 100755
--- a/sbg/Makefile.include
+++ b/sbg/Makefile.include
@@ -16,14 +16,15 @@ CONVERTERS_ROOT := sbg/dto/converters
$(SBG_ROOT)/map.cpp \
$(SBG_ROOT)/pw_map.cpp \
$(SBG_ROOT)/sbg.cpp \
- $(SBG_ROOT)/sbg_algorithms.cpp \
- $(DTO_ROOT)/interval_dto.cpp \
- $(CONVERTERS_ROOT)/interval_dto_converter.cpp
+ $(SBG_ROOT)/sbg_algorithms.cpp
include util/Makefile.include
+include sbg/dto/Makefile.include
# Objects
SBG_OBJ=$(addprefix $(BUILD_DIR)/, $(SBG_SRC:.cpp=.o))
+# Combine SBG and DTO objects
+SBG_OBJ += $(DTO_OBJ)
create-folders::
@mkdir -p $(BUILD_DIR)/$(SBG_ROOT) \
diff --git a/sbg/dto/Makefile.include b/sbg/dto/Makefile.include
new file mode 100644
index 0000000..f4630be
--- /dev/null
+++ b/sbg/dto/Makefile.include
@@ -0,0 +1,9 @@
+# DTO Sources
+DTO_SRC := \
+ $(DTO_ROOT)/interval_dto.cpp \
+ $(DTO_ROOT)/multidim_inter_dto.cpp \
+ $(CONVERTERS_ROOT)/interval_dto_converter.cpp \
+ $(CONVERTERS_ROOT)/multidim_inter_dto_converter.cpp
+
+# DTO Objects
+DTO_OBJ=$(addprefix $(BUILD_DIR)/, $(DTO_SRC:.cpp=.o))
\ No newline at end of file
diff --git a/sbg/dto/converters/multidim_inter_dto_converter.cpp b/sbg/dto/converters/multidim_inter_dto_converter.cpp
new file mode 100644
index 0000000..e91e025
--- /dev/null
+++ b/sbg/dto/converters/multidim_inter_dto_converter.cpp
@@ -0,0 +1,45 @@
+/*******************************************************************************
+
+ This file is part of Set--Based Graph Library.
+
+ SBG Library 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 of the License, or
+ (at your option) any later version.
+
+ SBG Library 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 SBG Library. If not, see .
+
+ ******************************************************************************/
+
+#include "sbg/dto/converters/interval_dto_converter.hpp"
+#include "sbg/dto/converters/multidim_inter_dto_converter.hpp"
+#include "sbg/dto/interval_dto.hpp"
+#include "sbg/dto/multidim_inter_dto.hpp"
+#include "sbg/multidim_inter.hpp"
+#include "sbg/interval.hpp"
+
+namespace SBG {
+
+namespace API {
+
+SBG::LIB::MultiDimInter MultiDimInterDTOConverter::convertToMultiDimInter(const MultiDimInterDTO& dto) {
+ SBG::LIB::InterVector intervals;
+ intervals.reserve(dto.intervals_.size());
+
+ std::transform(dto.intervals_.begin(), dto.intervals_.end(), intervals.begin(),
+ [](const IntervalDTO& intervalDTO) {
+ return IntervalDTOConverter::convertToInterval(intervalDTO);
+ });
+
+ return SBG::LIB::MultiDimInter(intervals);
+}
+
+} // namespace API
+
+} // namespace SBG
\ No newline at end of file
diff --git a/sbg/dto/converters/multidim_inter_dto_converter.hpp b/sbg/dto/converters/multidim_inter_dto_converter.hpp
new file mode 100644
index 0000000..317cece
--- /dev/null
+++ b/sbg/dto/converters/multidim_inter_dto_converter.hpp
@@ -0,0 +1,54 @@
+/** @file interval_dto_converter.hpp
+
+ @brief MultiDimInterDTOConverter implementation
+
+ The MultiDimInterDTOConverter provides the methods to convert an MultiDimInterDTO
+ to the corresponding multidimensional interval representation. Currently, it can
+ convert to LIB::MultiDimInter, but more conversions can/will be added in the future.
+
+
+
+ This file is part of Set--Based Graph Library.
+
+ SBG Library 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 of the License, or
+ (at your option) any later version.
+
+ SBG Library 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 SBG Library. If not, see .
+
+ ******************************************************************************/
+
+#ifndef SBG_DTO_MULTIDIM_INTERVAL_CONVERTER_HPP
+#define SBG_DTO_MULTIDIM_INTERVAL_CONVERTER_HPP
+
+#include "sbg/dto/multidim_inter_dto.hpp"
+#include "sbg/multidim_inter.hpp"
+
+namespace SBG {
+
+namespace API {
+
+class MultiDimInterDTOConverter {
+public:
+ /**
+ * @brief Converts a MultiDimInterDTO object to an actual multidimensional
+ * interval implementation (e.g., SBG::LIB::MultiDimInter).
+ *
+ * @param dto The MultiDimInterDTO object to convert.
+ * @return SBG::LIB::MultiDimInter The converted interval object.
+ */
+ static SBG::LIB::MultiDimInter convertToMultiDimInter(const MultiDimInterDTO& dto);
+};
+
+} // namespace API
+
+} // namespace SBG
+
+#endif // SBG_DTO_MULTIDIM_INTERVAL_CONVERTER_HPP
diff --git a/sbg/dto/multidim_inter_dto.cpp b/sbg/dto/multidim_inter_dto.cpp
new file mode 100644
index 0000000..42416e0
--- /dev/null
+++ b/sbg/dto/multidim_inter_dto.cpp
@@ -0,0 +1,78 @@
+/*******************************************************************************
+
+ This file is part of Set--Based Graph Library.
+
+ SBG Library 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 of the License, or
+ (at your option) any later version.
+
+ SBG Library 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 SBG Library. If not, see .
+
+ ******************************************************************************/
+
+#include "sbg/dto/multidim_inter_dto.hpp"
+
+namespace SBG {
+
+namespace API {
+
+MultiDimInterDTO::MultiDimInterDTO() : intervals_() {}
+MultiDimInterDTO::MultiDimInterDTO(const MD_NAT &x) : intervals_() {
+ for (NAT xi : x)
+ intervals_.emplace_back(IntervalDTO(xi, 1, xi));
+}
+MultiDimInterDTO::MultiDimInterDTO(const IntervalDTO &i) : intervals_()
+{
+ intervals_.emplace_back(i);
+}
+MultiDimInterDTO::MultiDimInterDTO(const unsigned int &nmbr_copies
+ , const IntervalDTO &i) : intervals_() {
+ for (unsigned int j = 0; j < nmbr_copies; ++j)
+ intervals_.emplace_back(i);
+}
+MultiDimInterDTO::MultiDimInterDTO(const IntervalDTOVector &iv) : intervals_(iv) {}
+
+member_imp(MultiDimInterDTO, IntervalDTOVector, intervals);
+
+void MultiDimInterDTO::emplaceBack(IntervalDTO i)
+{
+ if (i.isEmpty())
+ intervals_ = IntervalDTOVector();
+ else
+ intervals_.emplace_back(i);
+ return;
+}
+
+IntervalDTO &MultiDimInterDTO::operator[](std::size_t n)
+{
+ return intervals_[n];
+}
+
+const IntervalDTO &MultiDimInterDTO::operator[](std::size_t n) const
+{
+ return intervals_[n];
+}
+
+std::ostream &operator<<(std::ostream &out, const MultiDimInterDTO &mdi)
+{
+ std::size_t sz = mdi.intervals_.size();
+
+ if (sz > 0) {
+ for (std::size_t j = 0; j < sz - 1; ++j)
+ out << mdi[j] << "x";
+ out << mdi[sz-1];
+ }
+
+ return out;
+}
+
+} // namespace API
+
+} // namespace SBG
diff --git a/sbg/dto/multidim_inter_dto.hpp b/sbg/dto/multidim_inter_dto.hpp
new file mode 100644
index 0000000..354d4b8
--- /dev/null
+++ b/sbg/dto/multidim_inter_dto.hpp
@@ -0,0 +1,63 @@
+/** @file multidim_inter.hpp
+
+ @brief Multi-dimensional interval implementation
+
+
+
+ This file is part of Set--Based Graph Library.
+
+ SBG Library 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 of the License, or
+ (at your option) any later version.
+
+ SBG Library 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 SBG Library. If not, see .
+
+ ******************************************************************************/
+
+#ifndef SBG_DTO_MULTIDIM_INTERVAL_HPP
+#define SBG_DTO_MULTIDIM_INTERVAL_HPP
+
+#include "sbg/dto/interval_dto.hpp"
+#include
+
+namespace SBG {
+
+namespace API {
+
+using MD_NAT = Util::MD_NAT;
+using NAT = Util::NAT;
+
+typedef std::vector IntervalDTOVector;
+
+struct MultiDimInterDTO {
+
+ member_class(IntervalDTOVector, intervals);
+
+ MultiDimInterDTO();
+ MultiDimInterDTO(const MD_NAT &x);
+ MultiDimInterDTO(const IntervalDTO &i);
+ MultiDimInterDTO(const unsigned int &nmbr_copies, const IntervalDTO &i);
+ MultiDimInterDTO(const IntervalDTOVector &iv);
+
+ void emplaceBack(IntervalDTO i);
+ IntervalDTO &operator[](std::size_t n);
+ const IntervalDTO &operator[](std::size_t n) const;
+
+ friend std::ostream &operator<<(std::ostream &out, const MultiDimInterDTO &i);
+ friend class MultiDimInterDTOConverter;
+};
+
+typedef MultiDimInterDTO SetPieceDTO;
+
+} // namespace LIB
+
+} // namespace SBG
+
+#endif