Massimo Fioravanti
df2413962b
Introduce TupleTreePath::isPrefixOf(Other)
2022-04-15 15:16:02 +02:00
Massimo Fioravanti
44720eedbd
Redesign TupleTreeDiff
...
`TupleTreeDiff` is now type-safe and owns the changes.
2022-04-15 15:14:13 +02:00
Massimo Fioravanti
38a3c5a086
Introduce TupleTree::deserialize
2022-04-15 15:14:02 +02:00
Antonio Frighetto
5848063b66
TupleTree: make const TupleTree& behave as such
...
A logic issue was addressed with improved state management.
2022-04-05 15:37:57 +02:00
Pietro Fezzardi
b4c733ab57
Move Concepts.h into include/ADT for better reuse
2022-03-30 17:09:24 +02:00
Ivan Krysak
326624f517
Fix TupleTreeCompatible linkage problem
...
Now all the generated `.cpp` include `Binary.h`. This ensures we don't
trigger the wrong concept due to forward declarations.
Also, this commit introduces a couple of `static_assert`s which should
enable us to early identification of similar problems.
2022-03-28 15:33:30 +02:00
Massimo Fioravanti
39e0f0ac96
TupleTreeDiff<Binary>: fix compile errors
2022-03-28 12:17:05 +02:00
Alessandro Di Federico
10dc6744b4
mv include/revng/{Model,TupleTree}/EnumTraits.h
...
`EnumTraits.h` is not model-specific.
2022-02-23 17:32:50 +01:00
Ivan Krysak
c14567e3d0
Make TupleTree::visitReferences public
2022-02-14 11:28:36 +01:00
Ivan Krysak
fd3e7243c1
Remove an unused parameter from TupleTree::clone
2022-02-14 11:28:36 +01:00
Ivan Krysak
7151c587f9
Prevent TupleTreeReference::isValid() asserts
2022-02-14 10:56:50 +01:00
Alessandro Di Federico
78be0e9268
Explode TupleTree.h
2022-01-31 16:28:26 +01:00
Alessandro Di Federico
29cf330fc8
TupleTreeDiff: use streams
2022-01-31 14:13:25 +01:00
Alessandro Di Federico
5c89a6a858
callOnPathSteps: fix UpcastablePointer handling
...
The version of callOnPathSteps without an actual instance was completely
ignoring the upcasted type of `UpcastablePointer`s. We now fix this by
calling the right template specialization, which we choose by inspecting
the key of the `UpcastablePointer`.
2022-01-31 14:13:25 +01:00
Alessandro Di Federico
c1ec001f46
TupleTreeDiff: dump any object
2022-01-31 14:13:25 +01:00
Alessandro Di Federico
09054e637a
Introduce TupleTree::replaceReferences
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
97db1d5f50
Make TypePaths comparable
2022-01-27 11:51:03 +01:00
Alessandro Di Federico
5484896e3f
TupleTreeDiff: fix path construction
...
This commit fixes a bug that led to put in a `TupleTreePath` an object
instead of its key.
2022-01-27 11:51:03 +01:00
Filippo Cremonese
74217b4fe5
Generate C++ model from YAML definition
...
Model classes are now described by a YAML document, which is used to
generate C++ headers containing classes and all the boilerplate
required for YAML serialization/deserialization, usage in
SortedVectors, etc. See the README in include/revng/Model for more
info.
2022-01-13 14:34:11 +01:00
Alessandro Di Federico
cfb47157b9
clang-tidy: readability-identifier-naming
...
This commit fixes all the non-compliance with our preliminary clang-tidy
configuration, which will be merged soon.
2022-01-07 09:18:05 +01:00
Alessandro Di Federico
d78993ac54
Add TupleTree file (de)serialization
...
Tuple tree file serialization will be used by the revng-pipeline as a
helper function to load and store the models in the working directory.
2022-01-05 14:44:57 +01:00
Pietro Fezzardi
e37425c686
TupleTreeReference: add getConst() method
2022-01-05 13:33:52 +01:00
Pietro Fezzardi
275959618f
TupleTree: make Root a std::variant<T *, const T*>
...
This enables holding TupleTreeReferences to immutable model objects
2022-01-05 13:33:52 +01:00
Pietro Fezzardi
c338e79de7
Extend TupleTreeCompatible concept
...
Before this commit, it was only matched by types that satisfied the
constraint `IsUpcastablePointer`, which is too strict.
Now also types that match `UpcastablePointerLike` satisfy the
constraints for this concept.
2022-01-05 13:33:40 +01:00
Alessandro Di Federico
4d7a175996
Extract TupleTree
2021-12-22 17:47:54 +01:00