solverforge_macros/
lib.rs1use proc_macro::TokenStream;
4
5mod attr_parse;
6mod attr_validation;
7mod entrypoints;
8mod planning_entity;
9mod planning_model;
10mod planning_solution;
11mod problem_fact;
12
13#[proc_macro_attribute]
14pub fn planning_entity(attr: TokenStream, item: TokenStream) -> TokenStream {
15 entrypoints::planning_entity_attr(attr, item)
16}
17
18#[proc_macro_attribute]
19pub fn planning_solution(attr: TokenStream, item: TokenStream) -> TokenStream {
20 entrypoints::planning_solution_attr(attr, item)
21}
22
23#[proc_macro_attribute]
24pub fn problem_fact(attr: TokenStream, item: TokenStream) -> TokenStream {
25 entrypoints::problem_fact_attr(attr, item)
26}
27
28#[proc_macro]
29pub fn planning_model(input: TokenStream) -> TokenStream {
30 entrypoints::planning_model_macro(input)
31}
32
33#[doc(hidden)]
34#[proc_macro_derive(
35 PlanningEntityImpl,
36 attributes(
37 planning_id,
38 planning_variable,
39 planning_list_variable,
40 planning_pin,
41 inverse_relation_shadow_variable,
42 previous_element_shadow_variable,
43 next_element_shadow_variable,
44 cascading_update_shadow_variable
45 )
46)]
47pub fn derive_planning_entity(input: TokenStream) -> TokenStream {
48 entrypoints::derive_planning_entity(input)
49}
50
51#[doc(hidden)]
52#[proc_macro_derive(
53 PlanningSolutionImpl,
54 attributes(
55 planning_entity_collection,
56 planning_list_element_collection,
57 problem_fact_collection,
58 planning_score,
59 value_range_provider,
60 shadow_variable_updates,
61 solverforge_constraints_path,
62 solverforge_config_path,
63 solverforge_solver_toml_path,
64 solverforge_conflict_repairs_path,
65 solverforge_scalar_groups_path
66 )
67)]
68pub fn derive_planning_solution(input: TokenStream) -> TokenStream {
69 entrypoints::derive_planning_solution(input)
70}
71
72#[doc(hidden)]
73#[proc_macro_derive(ProblemFactImpl, attributes(planning_id))]
74pub fn derive_problem_fact(input: TokenStream) -> TokenStream {
75 entrypoints::derive_problem_fact(input)
76}