solverforge_macros/
lib.rs1use proc_macro::TokenStream;
4
5mod attr_parse;
6mod entrypoints;
7mod list_registry;
8mod planning_entity;
9mod planning_solution;
10mod problem_fact;
11mod standard_registry;
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_derive(
29 PlanningEntityImpl,
30 attributes(
31 planning_id,
32 planning_variable,
33 planning_list_variable,
34 planning_pin,
35 inverse_relation_shadow_variable,
36 previous_element_shadow_variable,
37 next_element_shadow_variable,
38 cascading_update_shadow_variable
39 )
40)]
41pub fn derive_planning_entity(input: TokenStream) -> TokenStream {
42 entrypoints::derive_planning_entity(input)
43}
44
45#[proc_macro_derive(
46 PlanningSolutionImpl,
47 attributes(
48 planning_entity_collection,
49 planning_list_element_collection,
50 problem_fact_collection,
51 planning_score,
52 value_range_provider,
53 shadow_variable_updates,
54 solverforge_constraints_path,
55 solverforge_config_path,
56 solverforge_solver_toml_path
57 )
58)]
59pub fn derive_planning_solution(input: TokenStream) -> TokenStream {
60 entrypoints::derive_planning_solution(input)
61}
62
63#[proc_macro_derive(ProblemFactImpl, attributes(planning_id))]
64pub fn derive_problem_fact(input: TokenStream) -> TokenStream {
65 entrypoints::derive_problem_fact(input)
66}