retdec
Private Attributes | List of all members
RuleRelations Class Reference

#include <compare.h>

Collaboration diagram for RuleRelations:
Collaboration graph
[legend]

Public Member Functions

Constructors.
 RuleRelations (yaramod::Rule *rule)
 
Getters.
yaramod::Rule * getRule () const
 
std::vector< yaramod::Rule * > getEquals () const
 
std::vector< yaramod::Rule * > getAlternatives () const
 
Queries.
bool hasEquals () const
 
bool hasAlternatives () const
 
Comparisons.
bool add (yaramod::Rule *otherRule)
 
bool isEqual (const yaramod::Rule *otherRule) const
 
bool isAlternative (const yaramod::Rule *otherRule) const
 
bool isEqualOrAlternative (const yaramod::Rule *otherRule) const
 
Auxiliary.
void makeAlternativesUniq ()
 

Private Attributes

yaramod::Rule * rule
 Base rule. More...
 
std::vector< yaramod::Rule * > equals
 
std::vector< yaramod::Rule * > alternatives
 

Detailed Description

Class representing relations of given rule with other rules.

Constructor & Destructor Documentation

◆ RuleRelations()

RuleRelations::RuleRelations ( yaramod::Rule *  rule)

Constructor.

Parameters
rulebase rule

Member Function Documentation

◆ add()

bool RuleRelations::add ( yaramod::Rule *  otherRule)

Add new relation for rule.

If rule is unrelated add nothing and return false.

Parameters
otherRulerule to add if related
Returns
true if rule is related and was added, false otherwise

◆ getAlternatives()

std::vector< Rule * > RuleRelations::getAlternatives ( ) const

Get alternatives.

Returns
vector of pointers to rule's alternatives

◆ getEquals()

std::vector< Rule * > RuleRelations::getEquals ( ) const

Get equals.

Returns
vector of pointers to rule's equals

◆ getRule()

Rule * RuleRelations::getRule ( ) const

Get base rule.

Returns
base rule pointer

◆ hasAlternatives()

bool RuleRelations::hasAlternatives ( ) const

Check whether rule has any alternatives.

Returns
true if rule has alternatives, false otherwise

◆ hasEquals()

bool RuleRelations::hasEquals ( ) const

Check whether rule has any equals.

Returns
true if rule has equals, false otherwise

◆ isAlternative()

bool RuleRelations::isAlternative ( const yaramod::Rule *  otherRule) const

Check whether rule is alternative.

Parameters
otherRulerule to compare with
Returns
true if otherRule is alternative, false otherwise

◆ isEqual()

bool RuleRelations::isEqual ( const yaramod::Rule *  otherRule) const

Check whether rule is equal.

Parameters
otherRulerule to compare with
Returns
true if otherRule is equal, false otherwise

◆ isEqualOrAlternative()

bool RuleRelations::isEqualOrAlternative ( const yaramod::Rule *  otherRule) const

Check whether rule is related.

Parameters
otherRulerule to compare with
Returns
true if otherRule is related, false otherwise

◆ makeAlternativesUniq()

void RuleRelations::makeAlternativesUniq ( )

Filter out duplicates in alternatives.

Member Data Documentation

◆ alternatives

std::vector<yaramod::Rule*> RuleRelations::alternatives
private

Rules with same patterns but different references.

These rules can be used later in static code detection, but can be stored more effectively in output file.

◆ equals

std::vector<yaramod::Rule*> RuleRelations::equals
private

Rules with both same patterns and same references.

These rules will have to be removed as it is impossible to detect them correctly in later stages of static code detection.

◆ rule

yaramod::Rule* RuleRelations::rule
private

Base rule.


The documentation for this class was generated from the following files: