ROSE  0.9.9.168
Public Member Functions | List of all members
Rose::BinaryAnalysis::SymbolicExpr::Simplifier Class Reference

Description

Operator-specific simplification methods.

Definition at line 553 of file BinarySymbolicExpr.h.

#include <BinarySymbolicExpr.h>

Inheritance diagram for Rose::BinaryAnalysis::SymbolicExpr::Simplifier:
Inheritance graph
[legend]

Public Member Functions

virtual Ptr fold (Nodes::const_iterator begin, Nodes::const_iterator end) const
 Constant folding. More...
 
virtual Ptr rewrite (Interior *) const
 Rewrite the entire expression to something simpler. More...
 

Member Function Documentation

virtual Ptr Rose::BinaryAnalysis::SymbolicExpr::Simplifier::fold ( Nodes::const_iterator  begin,
Nodes::const_iterator  end 
) const
inlinevirtual

Constant folding.

The range begin (inclusive) to end (exclusive) must contain at least two nodes and all of the nodes must be leaf nodes with known values. This method returns a new folded node if folding is possible, or the null pointer if folding is not possible.

Reimplemented in Rose::BinaryAnalysis::SymbolicExpr::ConcatSimplifier, Rose::BinaryAnalysis::SymbolicExpr::UmulSimplifier, Rose::BinaryAnalysis::SymbolicExpr::SmulSimplifier, Rose::BinaryAnalysis::SymbolicExpr::XorSimplifier, Rose::BinaryAnalysis::SymbolicExpr::OrSimplifier, Rose::BinaryAnalysis::SymbolicExpr::AndSimplifier, and Rose::BinaryAnalysis::SymbolicExpr::AddSimplifier.

Definition at line 560 of file BinarySymbolicExpr.h.

virtual Ptr Rose::BinaryAnalysis::SymbolicExpr::Simplifier::rewrite ( Interior ) const
inlinevirtual

Rewrite the entire expression to something simpler.

Returns the new node if the node can be simplified, otherwise returns null.

Reimplemented in Rose::BinaryAnalysis::SymbolicExpr::SetSimplifier, Rose::BinaryAnalysis::SymbolicExpr::MssbSimplifier, Rose::BinaryAnalysis::SymbolicExpr::LssbSimplifier, Rose::BinaryAnalysis::SymbolicExpr::ShrSimplifier, Rose::BinaryAnalysis::SymbolicExpr::ShlSimplifier, Rose::BinaryAnalysis::SymbolicExpr::UmodSimplifier, Rose::BinaryAnalysis::SymbolicExpr::UdivSimplifier, Rose::BinaryAnalysis::SymbolicExpr::SmodSimplifier, Rose::BinaryAnalysis::SymbolicExpr::SdivSimplifier, Rose::BinaryAnalysis::SymbolicExpr::ZeropSimplifier, Rose::BinaryAnalysis::SymbolicExpr::UltSimplifier, Rose::BinaryAnalysis::SymbolicExpr::UleSimplifier, Rose::BinaryAnalysis::SymbolicExpr::UgtSimplifier, Rose::BinaryAnalysis::SymbolicExpr::UgeSimplifier, Rose::BinaryAnalysis::SymbolicExpr::SltSimplifier, Rose::BinaryAnalysis::SymbolicExpr::SleSimplifier, Rose::BinaryAnalysis::SymbolicExpr::SgtSimplifier, Rose::BinaryAnalysis::SymbolicExpr::SgeSimplifier, Rose::BinaryAnalysis::SymbolicExpr::EqSimplifier, Rose::BinaryAnalysis::SymbolicExpr::SextendSimplifier, Rose::BinaryAnalysis::SymbolicExpr::UextendSimplifier, Rose::BinaryAnalysis::SymbolicExpr::RorSimplifier, Rose::BinaryAnalysis::SymbolicExpr::RolSimplifier, Rose::BinaryAnalysis::SymbolicExpr::NoopSimplifier, Rose::BinaryAnalysis::SymbolicExpr::IteSimplifier, Rose::BinaryAnalysis::SymbolicExpr::NegateSimplifier, Rose::BinaryAnalysis::SymbolicExpr::InvertSimplifier, Rose::BinaryAnalysis::SymbolicExpr::AsrSimplifier, Rose::BinaryAnalysis::SymbolicExpr::ExtractSimplifier, Rose::BinaryAnalysis::SymbolicExpr::ConcatSimplifier, Rose::BinaryAnalysis::SymbolicExpr::XorSimplifier, Rose::BinaryAnalysis::SymbolicExpr::OrSimplifier, Rose::BinaryAnalysis::SymbolicExpr::AndSimplifier, and Rose::BinaryAnalysis::SymbolicExpr::AddSimplifier.

Definition at line 566 of file BinarySymbolicExpr.h.


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