Skip to main content

CodeGraph

Struct CodeGraph 

Source
pub struct CodeGraph { /* private fields */ }
Expand description

The core in-memory graph of code units and their relationships.

Units are stored by their sequential ID. Edges are indexed by source ID for efficient forward traversal.

Implementations§

Source§

impl CodeGraph

Source

pub fn new(dimension: usize) -> Self

Create a new empty code graph with the given feature vector dimension.

Source

pub fn with_default_dimension() -> Self

Create with default dimension (256).

Source

pub fn add_unit(&mut self, unit: CodeUnit) -> u64

Add a code unit to the graph, assigning it a sequential ID.

Returns the assigned ID.

Source

pub fn add_edge(&mut self, edge: Edge) -> AcbResult<()>

Add an edge between two code units.

§Errors
  • AcbError::SelfEdge if source and target are the same.
  • AcbError::UnitNotFound if source or target don’t exist.
  • AcbError::TooManyEdges if the source unit already has too many edges.
Source

pub fn unit_count(&self) -> usize

Returns the number of code units.

Source

pub fn edge_count(&self) -> usize

Returns the number of edges.

Source

pub fn dimension(&self) -> usize

Returns the feature vector dimension.

Source

pub fn languages(&self) -> &HashSet<Language>

Returns the set of languages in the graph.

Source

pub fn get_unit(&self, id: u64) -> Option<&CodeUnit>

Get a code unit by ID.

Source

pub fn get_unit_mut(&mut self, id: u64) -> Option<&mut CodeUnit>

Get a mutable reference to a code unit by ID.

Source

pub fn units(&self) -> &[CodeUnit]

Iterate over all code units.

Source

pub fn edges(&self) -> &[Edge]

Iterate over all edges.

Source

pub fn edges_from(&self, source_id: u64) -> Vec<&Edge>

Get all edges originating from the given unit.

Source

pub fn edges_to(&self, target_id: u64) -> Vec<&Edge>

Get all edges targeting the given unit.

Source

pub fn edges_from_of_type( &self, source_id: u64, edge_type: EdgeType, ) -> Vec<&Edge>

Get edges from a source filtered by edge type.

Source

pub fn edges_to_of_type( &self, target_id: u64, edge_type: EdgeType, ) -> Vec<&Edge>

Get edges to a target filtered by edge type.

Source

pub fn find_units_by_name(&self, prefix: &str) -> Vec<&CodeUnit>

Find units by name (case-insensitive prefix match).

Source

pub fn find_units_by_exact_name(&self, name: &str) -> Vec<&CodeUnit>

Find units by exact name.

Source

pub fn find_units_by_type(&self, unit_type: CodeUnitType) -> Vec<&CodeUnit>

Find units by type.

Source

pub fn find_units_by_language(&self, language: Language) -> Vec<&CodeUnit>

Find units by language.

Source

pub fn find_units_by_path(&self, path: &Path) -> Vec<&CodeUnit>

Find units in a specific file.

Source

pub fn has_edge( &self, source_id: u64, target_id: u64, edge_type: EdgeType, ) -> bool

Check if an edge between two units of a given type already exists.

Source

pub fn stats(&self) -> GraphStats

Get summary statistics about the graph.

Trait Implementations§

Source§

impl Clone for CodeGraph

Source§

fn clone(&self) -> CodeGraph

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CodeGraph

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for CodeGraph

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more