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