Skip to documentation
SLOP

tiny.smg.scan.core.edge

Reference tiny.smg scan core edge

Defined in scan.core.

API (7)

Actions

Public operations.

No direct callersNo direct callsscan.coreedge
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Called byCallsNo direct callersscan.core.edgeaddScanEdgescan.core.edgescanEdgeMetadatascan.core.edgeaddCallEdge
Static calls · unresolved targets: 1 · external targets: 1.
Called byCallsprivate; no linktools.smg.src.scan.pipeline.scanscanCIncludeLineprivate; no linktools.smg.src.scan.pipeline.scanscanZigAstVariableInitializerprivate; no linktools.smg.src.scan.pipeline.scanscanZigTreeVariableInitializerscan.core.edgeaddScanEdgescan.core.edgescanEdgeMetadatascan.core.edgeaddImportEdge
Static calls · unresolved targets: 1 · external targets: 1.
Called byCallsscan.core.edgeaddCallEdgescan.core.edgeaddImportEdgeprivate; no linktools.smg.src.scan.pipeline.scanaddCDefineConstantNodeprivate; no linktools.smg.src.scan.pipeline.scanaddCLikeFunctionNodeprivate; no linktools.smg.src.scan.pipeline.scanaddCLikeNamespaceNode+15 moreviewcontainsEdgescan.core.edgeaddScanEdge
Static calls · unresolved targets: 0 · external targets: 1.
Called byCallsNo direct callsprivate; no linktools.smg.src.scan.testexpectZigStructMemberstest; no linktools.smg.src.scan.testtest: Chiclet scan preserves public d...test; no linktools.smg.src.scan.testtest: Chiclet scan resolves ordinary ...test; no linktools.smg.src.scan.testtest: c++ fallback preserves namespac...test; no linktools.smg.src.scan.testtest: c++ fallback resolves qualified...+84 morescan.core.edgeedgeExists
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsscan.core.edgeaddCallEdgescan.core.edgeaddImportEdgeprivate; no linktools.smg.src.scan.pipeline.scanresolveDeferredEdgesmodelmergePairsmodelsourcePairscan.core.edgescanEdgeMetadata
Static calls · unresolved targets: 0 · external targets: 0.

Source: tools/smg/src/scan/core/edge.zig

zig
const std = @import("std");const smg = @import("../../root.zig");const core = @import("root.zig");const graph_mod = smg.graph;const model = smg.model;const view = smg.view;const CallTarget = core.CallTarget;const Stats = core.Stats;pub fn addScanEdge(graph: *graph_mod.Graph, stats: *Stats, edge: model.Edge) !void {    if (try view.containsEdge(graph.*, edge.source, edge.rel, edge.target)) return;    const added = graph_mod.addEdgeTracked(graph, edge) catch |err| switch (err) {        error.NodeNotFound => return,        else => return err,    };    if (added) stats.edges_added += 1;}pub fn addCallEdge(allocator: std.mem.Allocator, graph: *graph_mod.Graph, caller: []const u8, target: CallTarget, stats: *Stats) !void {    const edge = model.Edge{ .source = caller, .rel = model.RelType.calls, .target = target.name, .metadata = &.{} };    if (target.resolved and graph_mod.getNode(graph, target.name) != null) {        try addScanEdge(graph, stats, .{ .source = edge.source, .rel = edge.rel, .target = edge.target, .metadata = try scanEdgeMetadata(allocator, edge.metadata) });    } else {        try stats.deferred.append(edge);    }}pub fn addImportEdge(allocator: std.mem.Allocator, graph: *graph_mod.Graph, module: []const u8, target: []const u8, metadata: []const model.Pair, stats: *Stats) !void {    const edge = model.Edge{ .source = module, .rel = model.RelType.imports, .target = target, .metadata = metadata };    if (graph_mod.getNode(graph, target) != null) {        try addScanEdge(graph, stats, .{ .source = edge.source, .rel = edge.rel, .target = edge.target, .metadata = try scanEdgeMetadata(allocator, edge.metadata) });    } else {        try stats.deferred.append(edge);    }}pub fn edgeExists(graph: graph_mod.Graph, source: []const u8, rel: []const u8, target: []const u8) bool {    for (graph.edges.items) |edge| {        if (std.mem.eql(u8, edge.source, source) and std.mem.eql(u8, edge.rel, rel) and std.mem.eql(u8, edge.target, target)) return true;    }    return false;}pub fn deferredEdgeExists(stats: Stats, source: []const u8, rel: []const u8, target: []const u8) bool {    for (stats.deferred.values()) |edge| {        if (std.mem.eql(u8, edge.source, source) and std.mem.eql(u8, edge.rel, rel) and std.mem.eql(u8, edge.target, target)) return true;    }    return false;}pub fn scanEdgeMetadata(allocator: std.mem.Allocator, metadata: []const model.Pair) ![]const model.Pair {    return try model.mergePairs(allocator, metadata, try model.sourcePair(allocator, "scan"));}pub fn boolMetadata(allocator: std.mem.Allocator, key: []const u8) ![]const model.Pair {    const pairs = try allocator.alloc(model.Pair, 1);    pairs[0] = .{ .key = try allocator.dupe(u8, key), .value = try allocator.dupe(u8, "true"), .json = true };    return pairs;}

Source: tools/smg/src/scan/core/root.zig:2

zig
pub const edge = @import("edge.zig");

Complete caller list for scan.core.edge.addScanEdge

20 direct callers.

Complete caller list for scan.core.edge.edgeExists

89 direct callers.

Audit

Definitions8
Public names15
Members0
Version26.7.0
Revisiondaab053ee433