Ivan Krysak
ff436f36bf
SortedVector: add an iterator constructor
2024-03-18 11:02:21 +00:00
Ivan Krysak
7fae2e4522
STLExtras: introduce takeAsTuple
...
It's a useful shorthand for the cases where one only cares about
a constant number of top values in a range (i.e. first three elements of
a vector) and wants them as named variables. It can be used as:
`auto [First, Second, Third] = takeAsTuple<3>(MyVector)`.
2024-01-29 11:57:54 +02:00
Ivan Krysak
3068cd219e
compile_time: add a tuple repeat overload
...
Based on the passed `Callable`, it either behaves as previously,
or returns a `std::tie`'d version of all the values returned by it.
2024-01-29 11:57:54 +02:00
Ivan Krysak
f67030214f
STLExtras: add to_underlying
2024-01-29 11:57:54 +02:00
Ivan Krysak
b25a32de2a
Stop using std:: prefix for std::size_t
2024-01-29 11:57:54 +02:00
Giacomo Vercesi
27b6fa984d
STLExtras: fix append
...
Before this commit, the `append` function did not work with contained
objects which were not default-constructible. This commit fixes this
behavior by using a different choice of iterator wrappers which avoids
the need for the contained object to be default-constructible.
2024-01-26 17:46:21 +01:00
Massimo Fioravanti
c276a439b5
Add pipeline invalidation
...
Replace the stub implementation of invalidation with the proper
implementation. A ReadPathCache is added to each global so that it can
keep tracks of what target are associated to which read paths.
2024-01-02 11:14:56 +01:00
Massimo Fioravanti
643d96698d
Preliminaries for pipeline invalidation
...
Fix various bugs already present in the codebase.
2024-01-02 11:06:48 +01:00
Giacomo Vercesi
acd498bf25
Pipeline options: restrict to int and strings
...
Restrict the type of pipeline options to integers and strings. Rework
the CLOpt mechanism to avoid parsing the string twice.
2023-11-03 12:13:57 +01:00
Alessandro Di Federico
73a7041396
Introduce GenericGraph::verify
2023-07-26 10:16:25 +02:00
Alessandro Di Federico
a552bb1920
ConstantRangeSet: introduce size manipulation API
2023-07-26 10:16:25 +02:00
Ivan Krysak
8fb21693cc
CompileTime: improve documentation
2023-07-21 17:25:24 +02:00
Ivan Krysak
a012c752e2
CompileTime: introduce selection helper template
2023-07-21 17:25:24 +02:00
Ivan Krysak
b2506d8f4b
STLExtras: separate compile time helpers
2023-07-21 17:25:24 +02:00
Andrea Gussoni
f7db37e990
SetOperations: new header with useful set helpers
2023-07-07 15:02:08 +02:00
Ivan Krysak
9f1d9fd5d0
Use Container::contains() where appropriate
2023-07-02 15:06:11 +00:00
Ivan Krysak
5779cd878d
KOCs: make more STL-like
...
This adds a couple of newer methods missing from these templates.
2023-07-02 15:06:11 +00:00
Ivan Krysak
4ab4d85ead
STLExtras: remove incomplete iterator concepts
2023-07-02 15:06:11 +00:00
Ivan Krysak
37b8f80bf1
Concepts: introduce SpecializationOf
...
It was not available earlier because it required clang-13+
2023-07-02 17:05:52 +02:00
Ivan Krysak
b927e26f94
Drop concepts provided by the standard library
...
We needed these because our libc++ version didn't provide them. Now that
that's no longer the case, they can be safely dropped.
2023-07-02 13:20:49 +02:00
Ivan Krysak
a123ec2c35
Remove clang-format off around concepts
...
Now that clang-format no longer breaks anything involving a concept or
a requires clause on sight, these are no longer necessary
2023-07-02 13:20:49 +02:00
Ivan Krysak
bc98e0079f
Formatting: change PenaltyReturnTypeOnItsOwnLine
...
The new value is 21.
2023-07-02 13:20:49 +02:00
Ivan Krysak
01b4ec36c9
Formatting: set AllowShortEnumsOnASingleLine
...
The new value is `false`.
2023-07-02 13:15:08 +02:00
Ivan Krysak
c523167302
Formatting: enforce access modifier whitespaces
2023-07-02 13:09:52 +02:00
Alessandro Di Federico
4c01d9c28d
BidirectionalNode: implement edge removal
2023-06-30 13:38:27 +02:00
Alessandro Di Federico
5e72f8e31b
ConstantRangeSet::dump: custom APInt formatter
2023-06-30 12:35:18 +02:00
Alessandro Di Federico
08b8b0bd9f
ConstantRangeSet::size: fix corner case
...
In order to correctly represent the size of a 32-bit ConstantRange, you
need 33 bits.
2023-06-30 12:35:18 +02:00
Alessandro Di Federico
b21861b7f9
GraphTraits<GenericGraph>: fix const support
...
GraphTraits were not fully usable in case of a `const` graph due to a
missing std::conditional_t for the definition of the `Node` type.
2023-06-30 12:35:18 +02:00
Ivan Krysak
e3be901f1f
STLExtras: allow skip to result in empty ranges
...
This only affects the case where the number of elements to be skipped
exactly matches the number of elements in the container.
2023-06-30 12:35:18 +02:00
Alessandro Di Federico
84dd10cbdb
GenerichGraph.h: nullptr-initialize Edge::Neighbor
2023-06-30 12:35:18 +02:00
Ivan Krysak
02978910b0
STLExtras: introduce zip_pairs skip flavour
...
I found that it leads to better looking code when the check of whether
the range in question even has enough elements to skip is inside
the helper.
As such a separate type of skip entry point was introduced: one that
allows to iterate over the container pairwise
Now, instead of asserting, the loop just does nothing in cases like
```cpp
for (const auto &Element : zip_pairs(make_empty_range())
do_stuff();
```
2023-05-25 06:25:07 +00:00
Ivan Krysak
5b2af637de
Minor Changes
2023-05-25 06:25:07 +00:00
Giacomo Vercesi
31cd2b53f9
rcc: add codespell
...
Add codespell to the list of checks performed by
revng-check-conventions. This should reduce the amount of typos present
in the revng codebase.
2023-05-11 10:05:32 +02:00
Alessandro Di Federico
579b9a749f
Introduce GenericGraph::operator=
2023-05-10 09:17:35 +02:00
Ivan Krysak
5034488766
GenericGraph: hasSuccessor and hasPredecessor
...
Older node types didn't have these helpers, so they were added
for compatibility.
2023-04-27 17:28:22 +02:00
Ivan Krysak
7ca012dbc3
Minor improvements
2023-04-27 17:28:22 +02:00
Massimo Fioravanti
69aafd4181
TupleTree: implement tracking data manipulation
...
Implement the core visits that are able to inspect the model bypassing
the instrumentation.
2023-04-21 17:51:05 +02:00
Massimo Fioravanti
d65d73359d
TrackingContainer: review API
2023-04-21 17:49:26 +02:00
Alessandro Di Federico
dbcdad0a4d
Switch from llvm::Optional to std::optional
2023-04-08 08:42:24 +02:00
Alessandro Di Federico
389342411a
Drop makeArrayRef
2023-04-08 08:42:24 +02:00
Alessandro Di Federico
5ed9432a68
Fix ambiguous template function
...
Bumping LLVM version turned these into compiler errors.
2023-04-08 08:42:23 +02:00
Alessandro Di Federico
74ae629853
Drop experimental from coroutines
2023-04-08 08:42:23 +02:00
Alessandro Di Federico
52521f8cac
Adopt more standard library's features
2023-04-08 08:42:23 +02:00
Alessandro Di Federico
b2f22c168f
Adopt clang-format 16
2023-04-08 08:42:23 +02:00
Ivan Krysak
9eb55f363b
STLExtras: introduce some c++20 invocable concepts
2023-03-15 10:19:02 +01:00
Ivan Krysak
3904e525b0
SortedVector: improve new element insertion
...
This introduces `emplace` and `emplace_or_assign` members
allowing population of the container without copying values in.
It also reworks the batch insertion. On top of adding the ability
to move the elements in (without making a copy) and constructing
them in place, it also makes the non-assign version of the inserter
a lot safer by explicitly asserting the fact that while it was
in use no duplicates were added to the vector. Before now,
the duplicates were just silently removed from the container.
It also optimizes the batch insertion somewhat by using non-stable
`std::sort` for unique case as well as replacing `std::unique`
invocation with `std::find_adjacent`.
2023-03-15 10:19:02 +01:00
Ivan Krysak
64a4672f32
STLExtras: introduce ranges::views::as_rvalue
2023-03-15 10:19:01 +01:00
Ivan Krysak
a06d9fedbd
STLExtras: extend revng::find family
2023-03-15 10:19:01 +01:00
Ivan Krysak
e79870e7c6
STLExtras: rework the skip range modifier
...
Note that all this is going to be obsolete once we can start using
the compiler with c++20 `views` support.
2023-03-15 10:19:01 +01:00
Ivan Krysak
11c0d7f02e
Stop using \brief doxygen command
2023-03-15 10:19:01 +01:00