Loading...
Searching...
No Matches
BinaryNinja::SimilarityProvider Class Referenceabstract

Produces, applies, and renders similarity results for session entities. More...

Detailed Description

Produces, applies, and renders similarity results for session entities.

C++ implementations must be thread safe because callbacks may overlap across nodes and sessions. Provider visits must write changes through the given SimilarityProviderResults. Visits made by a session keep the visited node and both edge endpoints active. Direct calls must provide active views.

Public Member Functions

 SimilarityProvider (SimilarityProviderType *type)
 SimilarityProvider (BNSimilarityProvider *provider)
Ref< SimilarityProviderType > GetType () const
SimilarityProviderId GetId () const
virtual bool UpdateSettings (Settings &)
 Replaces this provider's settings only if they are valid.
void VisitNode (SimilaritySessionNode &node, SimilaritySessionCompletion &completion)
 Performs a complete node visit.
void VisitNodeEdge (SimilaritySessionNode &from, SimilaritySessionNode &to, SimilaritySessionCompletion &completion)
 Performs a complete edge visit.
virtual bool VisitNode (SimilaritySessionNode &, SimilarityProviderResults &, SimilaritySessionCompletion &)
 Visits a node and writes results for it.
virtual bool VisitNodeEdge (SimilaritySessionNode &, SimilaritySessionNode &, SimilarityProviderResults &, SimilaritySessionCompletion &)
 Visits an edge after both endpoint nodes have been visited and writes results for the edge.
virtual std::optional< std::string > GetName (SimilaritySessionNode &node, SimilarityEntityId entity, SimilarityResultId result)=0
 Returns the display name for a result, if available.
virtual BNSimilarityApplyStatus Apply (SimilaritySessionNode &node, SimilarityEntityId entity, SimilarityResultId result)
 Applies a result.
virtual void Render (SimilaritySessionNode &node, SimilarityEntityId entity, SimilarityRenderContext &context, SimilarityResultId result)=0
 Adds views for a result to `context`.
Public Member Functions inherited from BinaryNinja::CoreRefCountObject< BNSimilarityProvider, BNNewSimilarityProviderReference, BNFreeSimilarityProvider >
 CoreRefCountObject ()
virtual ~CoreRefCountObject ()
BNSimilarityProvider * GetObject () const
void AddRef ()
void Release ()
void AddRefForRegistration ()
void ReleaseForRegistration ()
void AddRefForCallback ()
void ReleaseForCallback ()

Additional Inherited Members

Public Attributes inherited from BinaryNinja::CoreRefCountObject< BNSimilarityProvider, BNNewSimilarityProviderReference, BNFreeSimilarityProvider >
std::atomic< int > m_refs
bool m_registeredRef
BNSimilarityProvider * m_object

Constructor & Destructor Documentation

◆ SimilarityProvider() [1/2]

SimilarityProvider::SimilarityProvider ( SimilarityProviderType * type)

◆ SimilarityProvider() [2/2]

SimilarityProvider::SimilarityProvider ( BNSimilarityProvider * provider)

Member Function Documentation

◆ GetType()

Ref< SimilarityProviderType > SimilarityProvider::GetType ( ) const

◆ GetId()

SimilarityProviderId SimilarityProvider::GetId ( ) const

◆ UpdateSettings()

virtual bool BinaryNinja::SimilarityProvider::UpdateSettings ( Settings & )
inlinevirtual

Replaces this provider's settings only if they are valid.

Return false without changing the current settings when the new settings are invalid or updates are not supported. Use SimilaritySession::UpdateProviderSettings so affected entities are scheduled again.

◆ VisitNode() [1/2]

void SimilarityProvider::VisitNode ( SimilaritySessionNode & node,
SimilaritySessionCompletion & completion )

Performs a complete node visit.

The core manages the result updates.

◆ VisitNodeEdge() [1/2]

void SimilarityProvider::VisitNodeEdge ( SimilaritySessionNode & from,
SimilaritySessionNode & to,
SimilaritySessionCompletion & completion )

Performs a complete edge visit.

The core manages the result updates.

◆ VisitNode() [2/2]

virtual bool BinaryNinja::SimilarityProvider::VisitNode ( SimilaritySessionNode & ,
SimilarityProviderResults & ,
SimilaritySessionCompletion &  )
inlinevirtual

Visits a node and writes results for it.

Return `false` to discard the visit.

Reimplemented in BinaryNinja::CoreSimilarityProvider.

◆ VisitNodeEdge() [2/2]

virtual bool BinaryNinja::SimilarityProvider::VisitNodeEdge ( SimilaritySessionNode & ,
SimilaritySessionNode & ,
SimilarityProviderResults & ,
SimilaritySessionCompletion &  )
inlinevirtual

Visits an edge after both endpoint nodes have been visited and writes results for the edge.

Return `false` to discard the visit.

Reimplemented in BinaryNinja::CoreSimilarityProvider.

◆ GetName()

virtual std::optional< std::string > BinaryNinja::SimilarityProvider::GetName ( SimilaritySessionNode & node,
SimilarityEntityId entity,
SimilarityResultId result )
pure virtual

Returns the display name for a result, if available.

Implemented in BinaryNinja::CoreSimilarityProvider.

◆ Apply()

BNSimilarityApplyStatus SimilarityProvider::Apply ( SimilaritySessionNode & node,
SimilarityEntityId entity,
SimilarityResultId result )
virtual

Applies a result.

The default implementation transfers metadata from the result target; overrides can call it before adding provider-specific metadata.

Reimplemented in BinaryNinja::CoreSimilarityProvider.

◆ Render()

virtual void BinaryNinja::SimilarityProvider::Render ( SimilaritySessionNode & node,
SimilarityEntityId entity,
SimilarityRenderContext & context,
SimilarityResultId result )
pure virtual

Adds views for a result to `context`.

Implemented in BinaryNinja::CoreSimilarityProvider.