decompiler  1.0.0
Public Member Functions | Private Attributes | List of all members
CommentDatabaseInternal Class Reference

An in-memory implementation of the CommentDatabase API. More...

#include <comment.hh>

Inheritance diagram for CommentDatabaseInternal:
CommentDatabase

Public Member Functions

 CommentDatabaseInternal (void)
 Constructor.
 
virtual void clear (void)
 Clear all comments from this container.
 
virtual void clearType (const Address &fad, uint4 tp)
 Clear all comments matching (one of) the indicated types. More...
 
virtual void addComment (uint4 tp, const Address &fad, const Address &ad, const string &txt)
 Add a new comment to the container. More...
 
virtual bool addCommentNoDuplicate (uint4 tp, const Address &fad, const Address &ad, const string &txt)
 Add a new comment to the container, making sure there is no duplicate. More...
 
virtual void deleteComment (Comment *com)
 Remove the given Comment object from the container. More...
 
virtual CommentSet::const_iterator beginComment (const Address &fad) const
 Get an iterator to the beginning of comments for a single function. More...
 
virtual CommentSet::const_iterator endComment (const Address &fad) const
 Get an iterator to the ending of comments for a single function. More...
 
virtual void saveXml (ostream &s) const
 Save all comments in the container to an XML stream. More...
 
virtual void restoreXml (const Element *el, const AddrSpaceManager *manage)
 Restore all comments from XML. More...
 
- Public Member Functions inherited from CommentDatabase
 CommentDatabase (void)
 Constructor.
 
virtual ~CommentDatabase (void)
 Destructor.
 

Private Attributes

CommentSet commentset
 The sorted set of Comment objects.
 

Detailed Description

An in-memory implementation of the CommentDatabase API.

All Comment objects are held in memory in a sorted container. This can be used as stand-alone database of comments, or it can act as a cache for some other container.

Member Function Documentation

void CommentDatabaseInternal::addComment ( uint4  tp,
const Address fad,
const Address ad,
const string &  txt 
)
virtual

Add a new comment to the container.

Parameters
tpis a set of properties to associate with the new comment (may be zero)
fadis the address of the function to which the comment belongs
adis the address to which the comment is attached
txtis the body of the comment

Implements CommentDatabase.

References commentset, and Comment::uniq.

Referenced by CommentDatabaseGhidra::addComment(), and restoreXml().

bool CommentDatabaseInternal::addCommentNoDuplicate ( uint4  tp,
const Address fad,
const Address ad,
const string &  txt 
)
virtual

Add a new comment to the container, making sure there is no duplicate.

If there is already a comment at the same address with the same body, no new comment is added.

Parameters
tpis a set of properties to associate with the new comment (may be zero)
fadis the address of the function to which the comment belongs
adis the address to which the comment is attached
txtis the body of the comment
Returns
true if a new Comment was created, false if there was a duplicate

Implements CommentDatabase.

References commentset, and Comment::uniq.

Referenced by CommentDatabaseGhidra::addCommentNoDuplicate().

CommentSet::const_iterator CommentDatabaseInternal::beginComment ( const Address fad) const
virtual

Get an iterator to the beginning of comments for a single function.

Parameters
fadis the address of the function
Returns
the beginning iterator

Implements CommentDatabase.

References commentset, and Address::m_minimal.

Referenced by CommentDatabaseGhidra::beginComment(), and CommentDatabaseGhidra::fillCache().

void CommentDatabaseInternal::clearType ( const Address fad,
uint4  tp 
)
virtual

Clear all comments matching (one of) the indicated types.

Clearing is restricted to comments belonging to a specific function and matching at least one of the given properties

Parameters
fadis the address of the owning function
tpis a set of one or more properties

Implements CommentDatabase.

References commentset, Address::m_maximal, and Address::m_minimal.

Referenced by CommentDatabaseGhidra::clearType().

void CommentDatabaseInternal::deleteComment ( Comment com)
virtual

Remove the given Comment object from the container.

Parameters
comis the given Comment

Implements CommentDatabase.

References commentset.

CommentSet::const_iterator CommentDatabaseInternal::endComment ( const Address fad) const
virtual

Get an iterator to the ending of comments for a single function.

Parameters
fadis the address of the function
Returns
the ending iterator

Implements CommentDatabase.

References commentset, and Address::m_maximal.

Referenced by CommentDatabaseGhidra::endComment(), and CommentDatabaseGhidra::fillCache().

void CommentDatabaseInternal::restoreXml ( const Element el,
const AddrSpaceManager manage 
)
virtual

Restore all comments from XML.

Parameters
elis the root <commentdb> element
manageis a manager for resolving address space references

Implements CommentDatabase.

References addComment(), Comment::getAddr(), Element::getChildren(), Comment::getFuncAddr(), Comment::getText(), Comment::getType(), and Comment::restoreXml().

Referenced by CommentDatabaseGhidra::fillCache().

void CommentDatabaseInternal::saveXml ( ostream &  s) const
virtual

Save all comments in the container to an XML stream.

Writes a <commentdb> tag, with <comment> sub-tags for each Comment object.

Parameters
sis the output stream

Implements CommentDatabase.

References commentset.


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