The Sparta Modeling Framework
Loading...
Searching...
No Matches
sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t > Struct Template Reference

Represents a Unary function node. More...

#include <ExpressionNodeTypes.hpp>

Inheritance diagram for sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >:
Collaboration diagram for sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >:

Public Member Functions

 UnaryFunction ()=delete
 No default construction.
 
 UnaryFunction (const UnaryFunction &rhp)
 
 UnaryFunction (const std::string &name, fxn_t fxn, ExpressionNode *op)
 
UnaryFunctionoperator= (const UnaryFunction &)=delete
 Non-assignable.
 
virtual UnaryFunctionclone_ () const override
 Deep copy of the content of this item.
 
virtual double evaluate_ () const override
 Compute value of this item in simulation.
 
virtual bool supportsCompression () const override
 
virtual void start () override
 
virtual void end () override
 
virtual void dump (std::ostream &o, bool show_range=true, bool resolve_subexprs=true) const override
 Dump the content of this expression item.
 
virtual void getClocks (std::vector< const Clock * > &clocks) const override
 Populates a vector with the clocks found in this subexpression node.
 
- Public Member Functions inherited from sparta::statistics::expression::ExpressionNode
 ExpressionNode (const ExpressionNode &)=delete
 No copy-constructable.
 
ExpressionNodeclone () const
 
uint32_t getStats (std::vector< const StatisticInstance * > &results) const
 Gets the statistics present in this expression.
 
double evaluate ()
 Compute value of this item in simulation. Must be implemented by subclass.
 

Public Attributes

const std::string name_
 Name of this unary function.
 
const fxn_t fxn_
 Unary function to invoke.
 
std::unique_ptr< ExpressionNodeoperand_
 Operand of the unary function fxn_.
 

Detailed Description

template<typename RetT = double, typename ArgT = double, typename fxn_t = RetT (* const)(ArgT)>
struct sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >

Represents a Unary function node.

Template Parameters
RetTReturn type of function pointer. Must be convertable to double

Definition at line 286 of file ExpressionNodeTypes.hpp.

Constructor & Destructor Documentation

◆ UnaryFunction() [1/2]

template<typename RetT = double, typename ArgT = double, typename fxn_t = RetT (* const)(ArgT)>
sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >::UnaryFunction ( const UnaryFunction< RetT, ArgT, fxn_t > &  rhp)
inline

Definition at line 309 of file ExpressionNodeTypes.hpp.

◆ UnaryFunction() [2/2]

template<typename RetT = double, typename ArgT = double, typename fxn_t = RetT (* const)(ArgT)>
sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >::UnaryFunction ( const std::string &  name,
fxn_t  fxn,
ExpressionNode op 
)
inline

brief Construct a new unary function

Parameters
Nameof function
unarydouble function pointer
opOperand. Must not be nullptr. Takes ownership

Definition at line 324 of file ExpressionNodeTypes.hpp.

Member Function Documentation

◆ clone_()

template<typename RetT = double, typename ArgT = double, typename fxn_t = RetT (* const)(ArgT)>
virtual UnaryFunction * sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >::clone_ ( ) const
inlineoverridevirtual

Deep copy of the content of this item.

To be overridden by subclasses

Implements sparta::statistics::expression::ExpressionNode.

Definition at line 340 of file ExpressionNodeTypes.hpp.

Here is the call graph for this function:

◆ dump()

template<typename RetT = double, typename ArgT = double, typename fxn_t = RetT (* const)(ArgT)>
virtual void sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >::dump ( std::ostream &  o,
bool  show_range = true,
bool  resolve_subexprs = true 
) const
inlineoverridevirtual

Dump the content of this expression item.

Note
Must not evaluate the expression
Parameters
oOstream to write to
show_rangeShould the range be shown in any subexpression nodes.
resolve_subexprsShould any referenced statistic defs be expanded to their full expressions so that this becomes an expression containing only counters.

Implements sparta::statistics::expression::ExpressionNode.

Definition at line 364 of file ExpressionNodeTypes.hpp.

◆ end()

template<typename RetT = double, typename ArgT = double, typename fxn_t = RetT (* const)(ArgT)>
virtual void sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >::end ( )
inlineoverridevirtual

◆ evaluate_()

template<typename RetT = double, typename ArgT = double, typename fxn_t = RetT (* const)(ArgT)>
virtual double sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >::evaluate_ ( ) const
inlineoverridevirtual

Compute value of this item in simulation.

Implements sparta::statistics::expression::ExpressionNode.

Definition at line 344 of file ExpressionNodeTypes.hpp.

◆ getClocks()

template<typename RetT = double, typename ArgT = double, typename fxn_t = RetT (* const)(ArgT)>
virtual void sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >::getClocks ( std::vector< const Clock * > &  clocks) const
inlineoverridevirtual

Populates a vector with the clocks found in this subexpression node.

Parameters
clocksVector of clocks to which any found clocks will be appended. This vector is not cleared.

Implements sparta::statistics::expression::ExpressionNode.

Definition at line 372 of file ExpressionNodeTypes.hpp.

◆ start()

template<typename RetT = double, typename ArgT = double, typename fxn_t = RetT (* const)(ArgT)>
virtual void sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >::start ( )
inlineoverridevirtual

◆ supportsCompression()

template<typename RetT = double, typename ArgT = double, typename fxn_t = RetT (* const)(ArgT)>
virtual bool sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >::supportsCompression ( ) const
inlineoverridevirtual

We currently are not attempting compression for UnaryFunction, BinaryFunction, and TernaryFunction SI's. These are not used with nearly as much frequency as counters, constants, and parameters.

Implements sparta::statistics::expression::ExpressionNode.

Definition at line 352 of file ExpressionNodeTypes.hpp.

Member Data Documentation

◆ fxn_

template<typename RetT = double, typename ArgT = double, typename fxn_t = RetT (* const)(ArgT)>
const fxn_t sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >::fxn_

Unary function to invoke.

Definition at line 296 of file ExpressionNodeTypes.hpp.

◆ name_

template<typename RetT = double, typename ArgT = double, typename fxn_t = RetT (* const)(ArgT)>
const std::string sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >::name_

Name of this unary function.

Definition at line 291 of file ExpressionNodeTypes.hpp.

◆ operand_

template<typename RetT = double, typename ArgT = double, typename fxn_t = RetT (* const)(ArgT)>
std::unique_ptr<ExpressionNode> sparta::statistics::expression::UnaryFunction< RetT, ArgT, fxn_t >::operand_

Operand of the unary function fxn_.

Definition at line 301 of file ExpressionNodeTypes.hpp.


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