7
8:- module(structures, [get_struct/2]). 9
69
70get_struct(Pattern, Term) :-
71 Pattern =.. [PHead|PTail],
72 get_struct(PHead, PTail, Term), !.
73
74get_struct(visualization, Fields, Term) :-
75 functor(Term, visualization, 13),
76 ( foreach(K:V,Fields),
77 param(Term)
78 do get_field_argno(K, visualization, I),
79 arg(I, Term, V)
80 ).
81get_struct(visualizer, Fields, Term) :-
82 functor(Term, visualizer, 12),
83 ( foreach(K:V,Fields),
84 param(Term)
85 do get_field_argno(K, visualizer, I),
86 arg(I, Term, V)
87 ).
88
89get_field_argno(root, visualization, 1).
90get_field_argno(tree_root, visualization, 2).
91get_field_argno(output, visualization, 3).
92get_field_argno(ignore_fixed, visualization, 4).
93get_field_argno(var_arg, visualization, 5).
94get_field_argno(name_arg, visualization, 6).
95get_field_argno(focus_arg, visualization, 7).
96get_field_argno(parent, visualization, 8).
97get_field_argno(stream, visualization, 9).
98get_field_argno(range_from, visualization, 10).
99get_field_argno(range_to, visualization, 11).
100get_field_argno(tree_stream, visualization, 12).
101get_field_argno(visualizers, visualization, 13).
102get_field_argno(id, visualizer, 1).
103get_field_argno(type, visualizer, 2).
104get_field_argno(type_name, visualizer, 3).
105get_field_argno(previous, visualizer, 4).
106get_field_argno(display, visualizer, 5).
107get_field_argno(x, visualizer, 6).
108get_field_argno(y, visualizer, 7).
109get_field_argno(group, visualizer, 8).
110get_field_argno(width, visualizer, 9).
111get_field_argno(height, visualizer, 10).
112get_field_argno(min, visualizer, 11).
113get_field_argno(max, visualizer, 12)