aboutsummaryrefslogtreecommitdiffstats
path: root/src/diagram/Structogram.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/diagram/Structogram.cpp')
-rw-r--r--src/diagram/Structogram.cpp128
1 files changed, 0 insertions, 128 deletions
diff --git a/src/diagram/Structogram.cpp b/src/diagram/Structogram.cpp
deleted file mode 100644
index 0575748..0000000
--- a/src/diagram/Structogram.cpp
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Structogram.cpp
- *
- * Created on: Nov 14, 2017
- * Author: naopross
- */
-
-#include "../diagram/Structogram.hpp"
-#include <memory>
-#include <exception>
-
-
-namespace samb {
-
-/* iterator nested class */
-Structogram::iterator::iterator(Statement::pointer first) {
- m_current = first;
-}
-
-Structogram::iterator::~iterator() {}
-
-Structogram::iterator& Structogram::iterator::operator++() {
- if (m_current->next != nullptr) {
- m_current = m_current->next;
- }
-
- return *this;
-}
-
-Structogram::iterator& Structogram::iterator::operator++(int) {
- static iterator old(*this);
- old = *this;
-
- operator++();
- return old;
-}
-
-bool Structogram::iterator::operator==(const iterator& other) const {
- if (*this->m_current == *other.m_current) {
- return true;
- }
-
- return false;
-}
-
-bool Structogram::iterator::operator!=(const iterator& other) const {
- return !(other == *this);
-}
-
-Statement& Structogram::iterator::operator*() const {
- if (m_current == nullptr) {
- throw std::logic_error("structogram iterator: m_current is nullptr");
- }
-
- return *m_current;
-}
-
-Statement::pointer Structogram::iterator::operator->() const {
- return m_current;
-}
-
-
-/**
- * Structogram class methods
- */
-Structogram::Structogram(std::string title) {
-
- m_size = 0;
- m_title = title;
-
- m_head = Statement::makeStatement(Statement::Type::SCOPE);
- m_tail = Statement::makeStatement(Statement::Type::END);
-
- m_head->next = m_tail;
- m_head->text = m_title;
-}
-
-Structogram::~Structogram() {
- /* no need to destroy anything because of smart pointers */
-}
-
-std::size_t Structogram::size() const {
- return m_size;
-}
-
-Structogram::iterator Structogram::insert_after(Structogram::iterator it, Statement::pointer statement) {
-
- if (statement == nullptr) {
- throw std::invalid_argument("structogram: attempt to insert a null statement");
- }
-
- // TODO: update m_tail
-
- statement->next = it->next;
- it->next = statement;
- m_size++;
-
- return ++it;
-}
-
-Structogram::iterator Structogram::erase_after(iterator it) {
-
- // TODO: error handling IE return a std::pair<iterator, bool>
-
- /* the first statement (scope of the program) cannot be deleted */
- if ((*it) == *m_head) {
- return it;
- }
-
- if (it->next == nullptr) {
- return it;
- }
-
- it->next = it->next->next;
-
- return it;
-}
-
-/* iterator related methods */
-Structogram::iterator Structogram::begin() const {
- return iterator(m_head);
-}
-
-const Structogram::iterator Structogram::end() const {
- return iterator(m_tail);
-}
-
-} /* namespace structograms */