From a7e74749a1c4edb2f8bc34c79e9bd1562de86ee9 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Tue, 19 Dec 2017 01:54:28 +0100 Subject: Change to Qt5 conding conventions Data structure changes: - Structogram is no longer just a scope, because it needs to store metadata - All structures now use QString instead of std::string, to integrate better in the Qt framework New code: - MainWindow ui code, building layout - MetadataDialog to change the metadata stored in the Structogram - Painter is a widget (still unimplemented) to show the structogram on the GUI --- include/diagram/statement.h | 63 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 include/diagram/statement.h (limited to 'include/diagram/statement.h') diff --git a/include/diagram/statement.h b/include/diagram/statement.h new file mode 100644 index 0000000..5cce908 --- /dev/null +++ b/include/diagram/statement.h @@ -0,0 +1,63 @@ +#ifndef DIAGRAM_STATEMENT_H +#define DIAGRAM_STATEMENT_H + +#include +#include + +#include + +namespace samb { + +/* Possible types of statement, according to the NS diagram paper + * + * PROCESS : a statement that does something + * SCOPE : simple scope to isolate variables + * DECISION : splits the program in 2 branches based on a condition + * SWITCH : splits the program in n branches depending on a value + * WHILE : check first loop + * UNTIL : check last loop + * PARALLEL : parallel operations + */ + +/* This struct is a statement (link) of the iterable object Scope + * (linked list), that is also a common interface for the various types of + * statements. + */ +class Statement +{ +public: + using pointer = std::shared_ptr; + + enum Type { + PROCESS, + SCOPE, + DECISION, + SWITCH, + WHILE, + UNTIL, + PARALLEL, + }; + + const Type type; + + Statement(Type t, const QString &text); + Statement(Type t, const QString &text, pointer next); + virtual ~Statement(); + + bool operator==(const Statement& other) const; + + /* accessors */ + void next(pointer next) { _next = next; } + pointer next() const { return _next; } + + void text(const QString &text) { _text = text; } + const QString& text() const { return _text; } + +private: + QString _text; + pointer _next; +}; + +} /* namespace samb */ + +#endif /* DIAGRAM_STATEMENT_H */ -- cgit v1.2.1