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< SimilarityProviderTypeGetType () 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 ()
BNSimilarityProviderGetObject () 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
BNSimilarityProviderm_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.