Vuo 2.4.2
Loading...
Searching...
No Matches
VuoCompilerCompositionDiff.hh
Go to the documentation of this file.
1
10#pragma once
11
12class VuoCompiler;
14class VuoCompilerNode;
16
21{
22public:
23 string diff(const string &oldCompositionGraphvizDeclaration, VuoCompilerComposition *newComposition, VuoCompiler *compiler);
24
25 void addNodeReplacement(const string &compositionIdentifier, const string &oldNodeIdentifier, const string &newNodeIdentifier);
26 void addNodeReplacement(const string &compositionIdentifier, const string &oldNodeIdentifier, const string &newNodeIdentifier, const map<string, string> &oldAndNewPortNames);
27 void addNodeClassReplacement(VuoCompilerNodeClass *oldNodeClass, VuoCompilerNodeClass *newNodeClass);
28 void addModuleReplacement(const string &moduleKey);
29 void addRefactoring(const string &compositionIdentifier, const set<VuoCompilerNode *> &nodesMoved, VuoCompilerNode *subcompositionMovedTo);
30 set<string> getModuleKeysReplaced(void) const;
31
32private:
33 void diff(VuoCompilerComposition *oldComposition, VuoCompilerComposition *newComposition, const string &parentCompositionIdentifier, const string &parentCompositionPath, const string &unqualifiedCompositionIdentifier, VuoCompiler *compiler, json_object *diffJson);
34
35 void addNodeReplacementInTopLevelComposition(const string &oldNodeIdentifier, const string &newNodeIdentifier);
36 void addNodeReplacementInTopLevelComposition(const string &oldNodeIdentifier, const string &newNodeIdentifier, const map<string, string> &oldAndNewPortNames);
37 bool isNodeBeingReplaced(const string &compositionIdentifier, const string &oldNodeIdentifier) const;
38 bool isNodeReplacingAnother(const string &compositionIdentifier, const string &newNodeIdentifier) const;
39 bool isNodeBeingRefactored(const string &parentCompositionIdentifier, const string &compositionIdentifier, const string &nodeIdentifier) const;
40
44 class NodeReplacement
45 {
46 public:
47 string compositionIdentifier;
48 string oldNodeIdentifier;
49 string newNodeIdentifier;
50 map<string, string> oldAndNewPortNames;
51 bool shouldMapIdenticalPortNames;
52 };
53 friend bool operator<(const NodeReplacement &lhs, const NodeReplacement &rhs);
54
58 class NodeClassReplacement
59 {
60 public:
61 string nodeClassName;
62 map<string, string> oldAndNewPortNames;
63 string oldSubcompositionSourceCode;
64 };
65 friend bool operator<(const NodeClassReplacement &lhs, const NodeClassReplacement &rhs);
66
70 class Refactoring
71 {
72 public:
73 string compositionIdentifier;
74 string unqualifiedSubcompositionIdentifier;
75 set<string> nodeIdentifiers;
76 };
77 friend bool operator<(const Refactoring &lhs, const Refactoring &rhs);
78
79 set<NodeReplacement> nodeReplacements;
80 set<NodeClassReplacement> nodeClassReplacements;
81 set<string> moduleReplacements;
82 set<Refactoring> refactorings;
83
84 friend class TestVuoCompilerComposition;
85};