Ghidra Decompiler Analysis Engine
Public Member Functions | List of all members
ActionDatabase Class Reference

Database of root Action objects that can be used to transform a function. More...

#include <action.hh>

Public Member Functions

 ~ActionDatabase (void)
 Destructor.
 
void resetDefaults (void)
 (Re)set the default configuration More...
 
const ActionGroupListgetGroup (const string &grp) const
 Get a specific grouplist by name.
 
ActionsetCurrent (const string &actname)
 Set the current root Action. More...
 
ActiontoggleAction (const string &grp, const string &basegrp, bool val)
 Toggle a group of Actions with a root Action. More...
 
void setGroup (const string &grp, const char **argv)
 Establish a new root Action. More...
 
void cloneGroup (const string &oldname, const string &newname)
 Clone a root Action. More...
 
bool addToGroup (const string &grp, const string &basegroup)
 Add a group to a root Action. More...
 
bool removeFromGroup (const string &grp, const string &basegroup)
 Remove a group from a root Action. More...
 
void universalAction (Architecture *glb)
 Build the universal action. More...
 

Detailed Description

Database of root Action objects that can be used to transform a function.

This is a container for Action objects. It also manages root Action objects, which encapsulate a complete transformation system that can be applied to functions. Root Action objects are derived from a single universal Action object that has every possible sub-action within it. A root Action has its own name and is derived from the universal via a grouplist, which lists a particular subset of Action and Rule groups to use for the root. A new root Action is created by providing a new grouplist via setGroup() or modifying an existing grouplist. This class is intended to be instantiated as a singleton and keeps track of the current root Action, which is the one that will be actively applied to functions.

Member Function Documentation

◆ addToGroup()

bool ActionDatabase::addToGroup ( const string &  grp,
const string &  basegroup 
)

Add a group to a root Action.

Add a group to the grouplist for a particular root Action. Do not use to redefine a root Action that has already been instantiated.

Parameters
grpis the name of the root Action
basegroupis the group to add
Returns
true for a new addition, false is the group was already present

◆ cloneGroup()

void ActionDatabase::cloneGroup ( const string &  oldname,
const string &  newname 
)

Clone a root Action.

Copy an existing root Action by copying its grouplist, giving it a new name. This is suitable for a copy then modify strategy to create a new root Action. Do not use to redefine a root Action that has already been instantiated

Parameters
oldnameis the name of an existing root Action
newnameis the name of the copy

◆ removeFromGroup()

bool ActionDatabase::removeFromGroup ( const string &  grp,
const string &  basegrp 
)

Remove a group from a root Action.

The group is removed from the grouplist of a root Action. Do not use to redefine a root Action that has already been instantiated.

Parameters
grpis the name of the root Action
basegrpis the group to remove
Returns
true if the group existed and was removed

◆ resetDefaults()

void ActionDatabase::resetDefaults ( void  )

(Re)set the default configuration

Clear out (possibly altered) root Actions. Reset the default groups. Set the default root action "decompile"

◆ setCurrent()

Action * ActionDatabase::setCurrent ( const string &  actname)

Set the current root Action.

The Action is specified by name. A grouplist must already exist for this name. If the Action doesn't already exist, it will be derived from the universal action via this grouplist.

Parameters
actnameis the name of the root Action

◆ setGroup()

void ActionDatabase::setGroup ( const string &  grp,
const char **  argv 
)

Establish a new root Action.

(Re)set the grouplist for a particular root Action. Do not use this routine to redefine an existing root Action.

Parameters
grpis the name of the root Action
argvis a list of static char pointers, which must end with a NULL pointer, or a zero length string.

◆ toggleAction()

Action * ActionDatabase::toggleAction ( const string &  grp,
const string &  basegrp,
bool  val 
)

Toggle a group of Actions with a root Action.

A particular group is either added or removed from the grouplist defining a particular root Action. The root Action is then (re)derived from the universal

Parameters
grpis the name of the root Action
basegrpis name of group (within the grouplist) to toggle
valis true if the group should be added or false if it should be removed
Returns
the modified root Action

◆ universalAction()

void ActionDatabase::universalAction ( Architecture conf)

Build the universal action.

Construct the universal Action that contains all possible components

Parameters
confis the Architecture that will use the Action

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