summaryrefslogtreecommitdiffstats
path: root/src/uscxml/transform/ChartToVHDL.h
diff options
context:
space:
mode:
authorStefan Radomski <sradomski@mintwerk.de>2016-02-24 10:50:58 (GMT)
committerStefan Radomski <sradomski@mintwerk.de>2016-02-24 10:50:58 (GMT)
commitc75ce66b2d0672ea43f5acf27294098ba9170f03 (patch)
tree639dad4cee757c973fa09d3e8f873d65ba07648d /src/uscxml/transform/ChartToVHDL.h
parentcf19f11b8d2bd6d9566c7528fbed40af06928abf (diff)
downloaduscxml-c75ce66b2d0672ea43f5acf27294098ba9170f03.zip
uscxml-c75ce66b2d0672ea43f5acf27294098ba9170f03.tar.gz
uscxml-c75ce66b2d0672ea43f5acf27294098ba9170f03.tar.bz2
Even more VHDL transformation
Diffstat (limited to 'src/uscxml/transform/ChartToVHDL.h')
-rw-r--r--src/uscxml/transform/ChartToVHDL.h214
1 files changed, 107 insertions, 107 deletions
diff --git a/src/uscxml/transform/ChartToVHDL.h b/src/uscxml/transform/ChartToVHDL.h
index 933faa4..84d8f7f 100644
--- a/src/uscxml/transform/ChartToVHDL.h
+++ b/src/uscxml/transform/ChartToVHDL.h
@@ -42,111 +42,111 @@ public:
void writeTo(std::ostream& stream);
-
- struct VNode {
- virtual void print(std::ostream& stream, const std::string padding = "") = 0;
- virtual ~VNode() {};
- };
- struct VBranch : VNode {
- std::vector< VNode* > v;
- virtual ~VBranch(){
- for(unsigned i = 0; i < v.size(); i++)
- delete v[i];
- }
-
- VBranch& operator +=(VNode* p ) {
- v.push_back(p);
- return *this;
- }
- };
-
- struct VPointer{
- VNode* ptr;
-
- operator VNode*() {
- return ptr;
- }
-
- VPointer& operator /( VNode* p ){
- ptr = p;
- return *this;
- }
- };
-
- struct VContainer {
- VBranch* ptr;
-
- operator VBranch*() {
- return ptr;
- }
- VContainer& operator /( VBranch* p ){
- ptr = p;
- return *this;
- }
- VContainer& operator , ( VPointer p ) {
- if(ptr) ptr->v.push_back(p.ptr);
- return *this;
- }
- VContainer& operator , ( VContainer c ) {
- if(ptr) ptr->v.push_back(c.ptr);
- return *this;
- }
- };
-
- struct VLine : VNode {
- VLine(const std::string& name) : name(name) {}
- virtual void print(std::ostream& stream, const std::string padding = "") {
- stream << " " << name;
- }
-
- std::string name;
- };
-
- struct VAssign : VBranch {
- virtual void print(std::ostream& stream, const std::string padding = "") {
- v[0]->print(stream, padding);
- stream << padding << " <=";
- v[1]->print(stream, padding + " ");
- }
- };
-
- struct VAnd : VBranch {
- virtual void print(std::ostream& stream, const std::string padding = "") {
- stream << std::endl << padding << "( '1' ";
- for(unsigned i = 0; i < v.size(); i++) {
- stream << std::endl << padding << " and";
- v[i]->print(stream, padding + " ");
- }
- stream << padding << ")" << std::endl;
- }
- };
-
- struct VOr : VBranch {
- virtual void print(std::ostream& stream, const std::string padding = "") {
- stream << std::endl << padding << "( '0' ";
- for(unsigned i = 0; i < v.size(); i++) {
- stream << std::endl << padding << " or";
- v[i]->print(stream, padding + " ");
- }
- stream << std::endl << padding << ")" << std::endl;
- }
- };
-
- struct VNot : VBranch {
- virtual void print(std::ostream& stream, const std::string padding = "") {
- stream << " ( not";
- v[0]->print(stream, padding + " ");
- stream << " )";
- }
- };
-
- struct VNop : VBranch {
- virtual void print(std::ostream& stream, const std::string padding = "") {
- v[0]->print(stream, padding);
- }
- };
-
-
+
+ struct VNode {
+ virtual void print(std::ostream& stream, const std::string padding = "") = 0;
+ virtual ~VNode() {};
+ };
+ struct VBranch : VNode {
+ std::vector< VNode* > v;
+ virtual ~VBranch() {
+ for(unsigned i = 0; i < v.size(); i++)
+ delete v[i];
+ }
+
+ VBranch& operator +=(VNode* p ) {
+ v.push_back(p);
+ return *this;
+ }
+ };
+
+ struct VPointer {
+ VNode* ptr;
+
+ operator VNode*() {
+ return ptr;
+ }
+
+ VPointer& operator /( VNode* p ) {
+ ptr = p;
+ return *this;
+ }
+ };
+
+ struct VContainer {
+ VBranch* ptr;
+
+ operator VBranch*() {
+ return ptr;
+ }
+ VContainer& operator /( VBranch* p ) {
+ ptr = p;
+ return *this;
+ }
+ VContainer& operator , ( VPointer p ) {
+ if(ptr) ptr->v.push_back(p.ptr);
+ return *this;
+ }
+ VContainer& operator , ( VContainer c ) {
+ if(ptr) ptr->v.push_back(c.ptr);
+ return *this;
+ }
+ };
+
+ struct VLine : VNode {
+ VLine(const std::string& name) : name(name) {}
+ virtual void print(std::ostream& stream, const std::string padding = "") {
+ stream << " " << name;
+ }
+
+ std::string name;
+ };
+
+ struct VAssign : VBranch {
+ virtual void print(std::ostream& stream, const std::string padding = "") {
+ v[0]->print(stream, padding);
+ stream << padding << " <=";
+ v[1]->print(stream, padding + " ");
+ }
+ };
+
+ struct VAnd : VBranch {
+ virtual void print(std::ostream& stream, const std::string padding = "") {
+ stream << std::endl << padding << "( '1' ";
+ for(unsigned i = 0; i < v.size(); i++) {
+ stream << std::endl << padding << " and";
+ v[i]->print(stream, padding + " ");
+ }
+ stream << padding << ")" << std::endl;
+ }
+ };
+
+ struct VOr : VBranch {
+ virtual void print(std::ostream& stream, const std::string padding = "") {
+ stream << std::endl << padding << "( '0' ";
+ for(unsigned i = 0; i < v.size(); i++) {
+ stream << std::endl << padding << " or";
+ v[i]->print(stream, padding + " ");
+ }
+ stream << std::endl << padding << ")" << std::endl;
+ }
+ };
+
+ struct VNot : VBranch {
+ virtual void print(std::ostream& stream, const std::string padding = "") {
+ stream << " ( not";
+ v[0]->print(stream, padding + " ");
+ stream << " )";
+ }
+ };
+
+ struct VNop : VBranch {
+ virtual void print(std::ostream& stream, const std::string padding = "") {
+ v[0]->print(stream, padding);
+ }
+ };
+
+
#define VLINE VPointer()/new VLine
#define VASSIGN VContainer()/new VAssign
#define VOR VContainer()/new VOr
@@ -154,8 +154,8 @@ public:
#define VNOT VContainer()/new VNot
#define VNOP VContainer()/new VNop
-
-
+
+
protected:
ChartToVHDL(const Interpreter& other);