lib/pluck/src/toplevel/context.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 const std = @import("std");
2 const alloc_arena = @import("alloc_arena");
3 const pluck = @import("../root.zig");
4 const Allocator = std.mem.Allocator;
5
6 const pexpr = pluck.pexpr;
7 const Definitions = pexpr.Definitions;
8 const TypeRegistry = pexpr.TypeRegistry;
9
10 const evaluator = pluck.evaluator;
11 const IncrementalLPSMC = evaluator.IncrementalLPSMC;
12
13 const bdd = pluck.bdd;
14 const Manager = bdd.Manager;
15
16 const query_context = pluck.query_context;
17 const top_types = @import("types.zig");
18 const config_owner = @import("config.zig");
19 const lifecycle = @import("lifecycle.zig");
20 const incremental = @import("incremental.zig");
21 const definitions = @import("definitions.zig");
22 const diagnostics = @import("diagnostics.zig");
23 const forms = @import("forms.zig");
24 const query = @import("query.zig");
25 const script = @import("script.zig");
26 const prepared = @import("prepared.zig");
27 const source = @import("source.zig");
28
29 const ToplevelConfig = config_owner.ToplevelConfig;
30 pub const ToplevelContext = struct {
31 allocator: Allocator,
32 owns_shared: bool = true,
33 owns_arena: bool = true,
34
35 arena: *alloc_arena.Arena,
36
37 query_arena: *alloc_arena.Arena,
38
39 types: TypeRegistry,
40
41 definitions: Definitions,
42
43 manager: *Manager,
44
45 config: ToplevelConfig,
46
47 loading_stdlib: bool = false,
48
49 last_query_constructor_typo: ?top_types.QueryConstructorTypo = null,
50
51 current_source: ?[]const u8 = null,
52
53 last_error_span: ?top_types.SourceSpan = null,
54
55 incremental_lpsmc: ?*IncrementalLPSMC = null,
56
57 const Self = @This();
58
59 pub const QueryConstructorTypo: type = top_types.QueryConstructorTypo;
60
61 const SharedContext: type = query_context.SharedContext;
62 const QueryContext: type = query_context.QueryContext;
63 const RunContext: type = query_context.RunContext;
64 const QueryConfig: type = query_context.QueryConfig;
65 const SessionConfig: type = query_context.SessionConfig;
66
67 pub const QueryResultCallback: type = source.QueryResultCallback;
68
69 pub const init = lifecycle.init;
70 pub const initWorker = lifecycle.initWorker;
71 pub const deinit = lifecycle.deinit;
72 pub const setConfig = lifecycle.setConfig;
73 pub const patchConfig = lifecycle.patchConfig;
74 pub const asSharedContext = lifecycle.asSharedContext;
75 pub const createQueryContext = lifecycle.createQueryContext;
76 pub const reset = lifecycle.reset;
77
78 pub const enableIncrementalLPSMC = incremental.enableIncrementalLPSMC;
79 pub const disableIncrementalLPSMC = incremental.disableIncrementalLPSMC;
80 pub const isIncrementalLPSMCEnabled = incremental.isIncrementalLPSMCEnabled;
81 pub const getIncrementalLPSMC = incremental.getIncrementalLPSMC;
82 pub const getLPSMCVarianceStats = incremental.getLPSMCVarianceStats;
83 pub const getLpsmcRunStats = incremental.getLpsmcRunStats;
84 pub const refinementAffectsPathChoices = incremental.refinementAffectsPathChoices;
85 pub const invalidateForRefinement = incremental.invalidateForRefinement;
86 pub const clearLPSMCCaches = incremental.clearLPSMCCaches;
87
88 pub const clearUserDefinitions = definitions.clearUserDefinitions;
89 pub const removeUserDefinition = definitions.removeUserDefinition;
90 pub const isDefined = definitions.isDefined;
91 pub const lookup = definitions.lookup;
92 pub const define = definitions.define;
93 pub const defineWithDoc = definitions.defineWithDoc;
94 pub const defineWithDocTrackChange = definitions.defineWithDocTrackChange;
95
96 pub const formatParseError = diagnostics.formatParseError;
97 pub const formatError = diagnostics.formatError;
98 pub const lastErrorSpan = diagnostics.lastErrorSpan;
99 pub const formatToplevelError = diagnostics.formatToplevelError;
100
101 pub const processForm = forms.processForm;
102 pub const runQueryExpr = query.runQueryExpr;
103 pub const parseSourceForms = script.parseSourceForms;
104 pub const executeSource = script.executeSource;
105 pub const prepareQuery = prepared.prepareQuery;
106 pub const runPreparedQuery = prepared.runPreparedQuery;
107
108 pub const loadFile = source.loadFile;
109 pub const loadFileWithWriter = source.loadFileWithWriter;
110 pub const processSource = source.processSource;
111 pub const processSourceSexprNoWriter = source.processSourceSexprNoWriter;
112 pub const processSourceWithWriter = source.processSourceWithWriter;
113 pub const processSourceWithCallback = source.processSourceWithCallback;
114 pub const processSourceSexprWithWriter = source.processSourceSexprWithWriter;
115 pub const processSourceSexprWithCallback = source.processSourceSexprWithCallback;
116 };