retdec
compare.h
Go to the documentation of this file.
1 
7 #ifndef PAT2YARA_COMPARE_H
8 #define PAT2YARA_COMPARE_H
9 
10 #include <memory>
11 #include <vector>
12 
13 // Forward declarations.
14 namespace yaramod {
15  class Rule;
16 } // namespace yaramod
17 
22 {
23  public:
26  RuleRelations(yaramod::Rule* rule);
28 
31  yaramod::Rule *getRule() const;
32  std::vector<yaramod::Rule*> getEquals() const;
33  std::vector<yaramod::Rule*> getAlternatives() const;
35 
38  bool hasEquals() const;
39  bool hasAlternatives() const;
41 
44  bool add(yaramod::Rule* otherRule);
45  bool isEqual(const yaramod::Rule* otherRule) const;
46  bool isAlternative(const yaramod::Rule* otherRule) const;
47  bool isEqualOrAlternative(const yaramod::Rule* otherRule) const;
49 
52  void makeAlternativesUniq();
54 
55  private:
56  yaramod::Rule* rule;
57 
64  std::vector<yaramod::Rule*> equals;
65 
72  std::vector<yaramod::Rule*> alternatives;
73 };
74 
75 std::vector<RuleRelations> getRuleRelationsFromRules(
76  const std::vector<std::unique_ptr<yaramod::Rule>> &rules);
77 
78 #endif
Definition: compare.h:22
std::vector< yaramod::Rule * > equals
Definition: compare.h:64
std::vector< yaramod::Rule * > alternatives
Definition: compare.h:72
bool isAlternative(const yaramod::Rule *otherRule) const
Definition: compare.cpp:276
std::vector< yaramod::Rule * > getEquals() const
Definition: compare.cpp:220
bool isEqual(const yaramod::Rule *otherRule) const
Definition: compare.cpp:262
void makeAlternativesUniq()
Definition: compare.cpp:299
bool isEqualOrAlternative(const yaramod::Rule *otherRule) const
Definition: compare.cpp:290
yaramod::Rule * getRule() const
Definition: compare.cpp:210
bool hasAlternatives() const
Definition: compare.cpp:250
yaramod::Rule * rule
Base rule.
Definition: compare.h:56
std::vector< yaramod::Rule * > getAlternatives() const
Definition: compare.cpp:230
RuleRelations(yaramod::Rule *rule)
Definition: compare.cpp:200
bool hasEquals() const
Definition: compare.cpp:240
bool add(yaramod::Rule *otherRule)
Definition: compare.cpp:320
std::vector< RuleRelations > getRuleRelationsFromRules(const std::vector< std::unique_ptr< yaramod::Rule >> &rules)
Definition: symbol_pattern.h:17