retdec
overlap_resolver.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_LOADER_UTILS_OVERLAP_RESOLVER_H
8 #define RETDEC_LOADER_UTILS_OVERLAP_RESOLVER_H
9 
10 #include <cstdint>
11 #include <functional>
12 #include <vector>
13 
14 #include "retdec/common/range.h"
16 
17 namespace retdec {
18 namespace loader {
19 
23 enum class Overlap
24 {
25  None,
26  OverStart,
27  InMiddle,
28  OverEnd,
29  Full
30 };
31 
33 {
34 public:
35  class Result
36  {
37  public:
38  Result(Overlap overlapType, const std::vector<retdec::common::Range<std::uint64_t>>& ranges);
39 
40  Overlap getOverlap() const;
41  const std::vector<retdec::common::Range<std::uint64_t>>& getRanges() const;
42 
43  private:
45  std::vector<retdec::common::Range<std::uint64_t>> _ranges;
46  };
47 
48  OverlapResolver() = delete;
49 
51 };
52 
53 } // namespace loader
54 } // namespace retdec
55 
56 #endif
Definition: overlap_resolver.h:36
Overlap getOverlap() const
Definition: overlap_resolver.cpp:27
Overlap _overlap
Definition: overlap_resolver.h:44
Result(Overlap overlapType, const std::vector< retdec::common::Range< std::uint64_t >> &ranges)
Definition: overlap_resolver.cpp:18
std::vector< retdec::common::Range< std::uint64_t > > _ranges
Definition: overlap_resolver.h:45
const std::vector< retdec::common::Range< std::uint64_t > > & getRanges() const
Definition: overlap_resolver.cpp:37
Definition: overlap_resolver.h:33
static OverlapResolver::Result resolve(const retdec::common::Range< std::uint64_t > &first, const retdec::common::Range< std::uint64_t > &second)
Definition: overlap_resolver.cpp:53
Declaration of templated Range class.
Declaration of operations over ranges.
Generic loader.
Overlap
Definition: overlap_resolver.h:24
@ OverEnd
Overlap over ending value.
@ OverStart
Overlap over starting value.
@ InMiddle
Overlap somewhere in the middle of the range.
@ Full
Full overlap of one range over another.
Definition: archive_wrapper.h:19