PIPS
hwac.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/hwac/hwac-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef hwac_header_included
7 #define hwac_header_included
8 /* hwac-local.h */
9 /*
10 
11  $Id: hwac-local.h 23065 2016-03-02 09:05:50Z coelho $
12 
13  Copyright 1989-2016 MINES ParisTech
14 
15  This file is part of PIPS.
16 
17  PIPS is free software: you can redistribute it and/or modify it
18  under the terms of the GNU General Public License as published by
19  the Free Software Foundation, either version 3 of the License, or
20  any later version.
21 
22  PIPS is distributed in the hope that it will be useful, but WITHOUT ANY
23  WARRANTY; without even the implied warranty of MERCHANTABILITY or
24  FITNESS FOR A PARTICULAR PURPOSE.
25 
26  See the GNU General Public License for more details.
27 
28  You should have received a copy of the GNU General Public License
29  along with PIPS. If not, see <http://www.gnu.org/licenses/>.
30 
31 */
32 #include "freia_spoc_private.h"
33 /* cproto-generated files */
34 /* hardware_accelerator.c */
35 extern bool freia_spoc_compiler(const string /*module*/);
36 extern bool freia_terapix_compiler(const string /*module*/);
37 extern bool freia_aipo_compiler(const string /*module*/);
38 extern bool freia_opencl_compiler(const string /*module*/);
39 extern bool freia_sigmac_compiler(const string /*module*/);
40 extern bool freia_mppa_compiler(const string /*module*/);
41 /* freia.c */
42 extern bool freia_some_effects_on_images(statement /*s*/);
43 extern expression freia_transpose_kernel(const expression /*se*/);
44 extern bool freia_is_transpose_call(statement /*s*/);
45 extern string freia_compile(string /*module*/, statement /*mod_stat*/, string /*target*/);
46 /* freia_spoc.c */
47 extern list freia_spoc_compile_calls(string /*module*/, dag /*fulld*/, sequence /*sq*/, list /*ls*/, const hash_table /*occs*/, hash_table /*exchanges*/, const set /*output_images*/, FILE */*helper_file*/, set /*helpers*/, int /*number*/);
48 /* freia_terapix.c */
49 extern list freia_trpx_compile_calls(string /*module*/, dag /*fulld*/, sequence /*sq*/, list /*ls*/, const hash_table /*occs*/, hash_table /*exchanges*/, const set /*output_images*/, FILE */*helper_file*/, set /*helpers*/, int /*number*/);
50 /* freia_opencl.c */
51 extern list freia_opencl_compile_calls(string /*module*/, dag /*fulld*/, sequence /*sq*/, list /*ls*/, const hash_table /*occs*/, hash_table /*exchanges*/, const set /*output_images*/, FILE */*helper_file*/, set /*helpers*/, int /*number*/, hash_table /*signatures*/);
52 /* freia_aipo.c */
53 extern list freia_aipo_compile_calls(string /*module*/, dag /*fulld*/, list /*ls*/, const hash_table /*occs*/, hash_table /*exchanges*/, int /*number*/);
54 /* freia_sigmac.c */
55 extern list freia_sigmac_compile_calls(string /*module*/, dag /*fulld*/, sequence /*sq*/, list /*ls*/, const hash_table /*occs*/, hash_table /*exchanges*/, const set /*output_images*/, FILE */*helper_file*/, set /*helpers*/, int /*number*/, int /*n_calls*/);
56 /* freia_mppa.c */
57 extern list freia_mppa_compile_calls(string /*module*/, dag /*fulld*/, sequence /*sq*/, list /*ls*/, const hash_table /*occs*/, hash_table /*exchanges*/, const set /*output_images*/, FILE */*helper_file*/, set /*helpers*/, int /*number*/);
58 /* dag-utils.c */
59 extern string dagvtx_to_string(const dagvtx /*v*/);
60 extern statement dagvtx_statement(const dagvtx /*v*/);
61 extern void dag_statements(set /*stats*/, const dag /*d*/);
62 extern bool dagvtx_other_stuff_p(const dagvtx /*v*/);
63 extern entity dagvtx_image(const dagvtx /*v*/);
64 extern _int dagvtx_number(const dagvtx /*v*/);
65 extern string dagvtx_number_str(const dagvtx /*v*/);
66 extern _int dagvtx_optype(const dagvtx /*v*/);
67 extern _int dagvtx_opid(const dagvtx /*v*/);
68 extern string dagvtx_function_name(const dagvtx /*v*/);
69 extern string dagvtx_operation(const dagvtx /*v*/);
70 extern string dagvtx_compact_operation(const dagvtx /*v*/);
71 extern int dagvtx_ordering(const dagvtx */*v1*/, const dagvtx */*v2*/);
72 extern dagvtx dagvtx_get_producer(const dag /*d*/, const dagvtx /*sink*/, const entity /*e*/, _int /*before_number*/);
73 extern void dagvtx_nb_dump(FILE */*out*/, const string /*what*/, const list /*l*/);
74 extern void dagvtx_dump(FILE */*out*/, const string /*name*/, const dagvtx /*v*/);
75 extern void dag_dump(FILE */*out*/, const string /*what*/, const dag /*d*/);
76 extern void dag_dot(FILE */*out*/, const string /*what*/, const dag /*d*/, const list /*lb*/, const list /*la*/);
77 extern void dag_dot_dump(const string /*module*/, const string /*name*/, const dag /*d*/, const list /*lb*/, const list /*la*/);
78 extern void dag_dot_dump_prefix(const string /*module*/, const string /*prefix*/, int /*number*/, const dag /*d*/, const list /*lb*/, const list /*la*/);
79 extern void dag_consistency_asserts(dag /*d*/);
80 extern void dag_remove_vertex(dag /*d*/, const dagvtx /*v*/);
81 extern dagvtx copy_dagvtx_norec(dagvtx /*v*/);
82 extern bool dagvtx_is_measurement_p(const dagvtx /*v*/);
83 extern void dag_append_vertex(dag /*d*/, dagvtx /*nv*/);
84 extern int dag_computation_count(const dag /*d*/);
85 extern list dag_vertex_preds(const dag /*d*/, const dagvtx /*target*/);
86 extern void freia_dag_optimize(dag /*d*/, hash_table /*exchanges*/, list */*lbefore*/, list */*lafter*/);
87 extern void dag_compute_outputs(dag /*d*/, const hash_table /*occs*/, const set /*output_images*/, const list /*ld*/, bool /*inloop*/);
88 extern void freia_hack_fix_global_ins_outs(dag /*dfull*/, dag /*d*/);
89 extern void dag_cleanup_other_statements(dag /*d*/);
90 extern bool single_image_assignement_p(dag /*d*/);
91 extern list dag_computable_vertices(dag /*d*/, const set /*computed*/, const set /*maybe*/, const set /*currents*/);
92 extern void set_append_vertex_statements(set /*s*/, list /*lv*/);
93 extern dag freia_build_dag(string /*module*/, list /*ls*/, int /*number*/, const hash_table /*occurrences*/, const set /*output_images*/, const list /*ld*/, bool /*inloop*/);
94 extern bool dag_no_image_operation(dag /*d*/);
95 extern statement freia_memory_management_statement(entity /*image*/, const hash_table /*occs*/, bool /*alloc*/);
96 extern void freia_switch_image_in_statement(statement /*s*/, entity /*old*/, entity /*img*/, bool /*write*/);
97 extern list dag_fix_image_reuse(dag /*d*/, hash_table /*init*/, const hash_table /*occs*/);
98 extern list dag_split_on_scalars(const dag /*initial*/, bool (* /*alone_only*/)(const dagvtx), dagvtx (* /*choose_vertex*/)(const list, bool), gen_cmp_func_t /*priority*/, void (* /*priority_update*/)(const dag), const set /*output_images*/);
99 extern list dag_connected_component(dag /*d*/, list */*plv*/, bool (* /*compat*/)(const dagvtx, const set, const dag));
100 extern list dag_split_connected_components(dag /*d*/, set /*output_images*/);
101 /* freia-utils.c */
102 extern const freia_api_t *hwac_freia_api(const char */*function*/);
103 extern int hwac_freia_api_index(const string /*function*/);
104 extern const freia_api_t *get_freia_api(int /*index*/);
105 extern const freia_api_t *get_freia_api_vtx(dagvtx /*v*/);
106 extern string what_operation(const _int type);
107 extern string what_operation_shape(const _int type);
108 extern void freia_spoc_set_operation(const freia_api_t */*api*/, _int */*type*/, _int */*id*/);
109 extern list freia_get_params(const freia_api_t */*api*/, list /*args*/);
110 extern list freia_get_vertex_params(const dagvtx /*v*/);
111 extern expression freia_get_nth_scalar_param(const dagvtx /*v*/, int /*n*/);
112 extern int freia_max_pixel_value(void);
113 extern list freia_extract_params(const int /*napi*/, list /*args*/, string_buffer /*head*/, string_buffer /*head2*/, hash_table /*params*/, int */*nparams*/);
114 extern call freia_ok(void);
115 extern bool freia_assignment_p(const entity /*e*/);
116 extern statement freia_copy_image(const entity /*source*/, const entity /*target*/);
117 extern void hwac_replace_statement(statement /*s*/, call /*newc*/, bool /*kill*/);
118 extern void hwac_kill_statement(statement /*s*/);
119 extern bool freia_image_variable_p(const entity /*var*/);
120 extern bool entity_freia_api_p(const entity /*f*/);
121 extern bool freia_statement_aipo_call_p(const statement /*s*/);
122 extern void freia_init_dep_cache(void);
123 extern void freia_close_dep_cache(void);
124 extern bool freia_scalar_rw_dep(const statement /*s*/, const statement /*t*/, list */*vars*/);
125 extern call freia_statement_to_call(const statement /*s*/);
126 extern bool is_freia_alloc(const statement /*s*/);
127 extern bool is_freia_dealloc(const statement /*s*/);
128 extern bool same_constant_parameters(const dagvtx /*v1*/, const dagvtx /*v2*/);
129 extern entity freia_create_helper_function(const string /*function_name*/, list /*lparams*/);
130 extern int freia_substitute_by_helper_call(dag /*d*/, set /*global_remainings*/, set /*remainings*/, list /*ls*/, const string /*function_name*/, list /*lparams*/, set /*helpers*/, int /*preceeding*/);
131 extern void freia_insert_added_stats(list /*ls*/, list /*stats*/, bool /*before*/);
132 extern void freia_add_image_arguments(list /*limg*/, list */*lparams*/);
133 extern hash_table freia_build_image_occurrences(statement /*s*/, set /*image_occs_stats*/, hash_table /*image_stats*/, const hash_table /*signatures*/);
134 extern void freia_clean_image_occurrences(hash_table /*occs*/);
135 extern bool freia_aipo_spoc_implemented(const freia_api_t */*api*/);
136 extern bool freia_aipo_terapix_implemented(const freia_api_t */*api*/);
137 extern bool freia_convolution_p(dagvtx /*v*/);
138 extern bool freia_convolution_width_height(dagvtx /*v*/, _int */*pw*/, _int */*ph*/, bool /*check*/);
139 extern list freia_allocate_new_images_if_needed(list /*ls*/, list /*images*/, const hash_table /*occs*/, const hash_table /*init*/, const hash_table /*signatures*/);
140 extern int freia_aipo_count(dag /*d*/, int */*pa*/, int */*pc*/);
141 extern set freia_compute_output_images(entity /*module*/, statement /*s*/);
143 extern void freia_migrate_statements(sequence /*sq*/, const set /*stats*/, const set /*before*/);
144 extern bool freia_extract_kernel_vtx(dagvtx /*v*/, bool /*strict*/, intptr_t */*k00*/, intptr_t */*k10*/, intptr_t */*k20*/, intptr_t */*k01*/, intptr_t */*k11*/, intptr_t */*k21*/, intptr_t */*k02*/, intptr_t */*k12*/, intptr_t */*k22*/);
145 extern string helper_file_name(string /*func_name*/, string /*suffix*/);
146 /* freia_transformations.c */
147 extern bool freia_unroll_while(const string /*module*/);
148 extern bool freia_remove_scalar_ww_deps(const string /*module*/);
149 extern bool remove_simple_scalar_pointers(const string /*module*/);
150 extern void freia_shuffle_move_forward(statement /*s*/);
151 #endif /* hwac_header_included */
call freia_statement_to_call(const statement)
return the actual function call from a statement, dealing with assign and returns....
Definition: freia-utils.c:973
void freia_clean_image_occurrences(hash_table)
cleanup occurrence data structure
Definition: freia-utils.c:1407
void freia_switch_image_in_statement(statement, entity, entity, bool)
switch read or written image in statement if this is an AIPO call, only substitute output or input de...
Definition: dag-utils.c:2746
void freia_migrate_statements(sequence, const set, const set)
Definition: freia-utils.c:1905
string dagvtx_function_name(const dagvtx)
Definition: dag-utils.c:126
statement freia_memory_management_statement(entity, const hash_table, bool)
Definition: dag-utils.c:2587
bool freia_aipo_spoc_implemented(const freia_api_t *)
whether api available with SPoC
Definition: freia-utils.c:1418
void hwac_kill_statement(statement)
remove contents of statement s.
Definition: freia-utils.c:761
bool freia_mppa_compiler(const string)
_int dagvtx_number(const dagvtx)
returns the vertex number, i.e.
Definition: dag-utils.c:98
string dagvtx_number_str(const dagvtx)
Definition: dag-utils.c:111
list freia_sigmac_compile_calls(string, dag, sequence, list, const hash_table, hash_table, const set, FILE *, set, int, int)
freia_sigmac.c
dagvtx dagvtx_get_producer(const dag, const dagvtx, const entity, _int)
return (last) producer of image e for vertex sink, or NULL if none found.
Definition: dag-utils.c:156
list dag_computable_vertices(dag, const set, const set, const set)
return the vertices which may be computed from the list of available images, excluding vertices in ex...
Definition: dag-utils.c:2307
bool freia_some_effects_on_images(statement)
freia.c
Definition: freia.c:402
void freia_spoc_set_operation(const freia_api_t *, _int *, _int *)
??? beurk: I keep the operation as two ints for code regeneration.
Definition: freia-utils.c:545
void freia_add_image_arguments(list, list *)
prepend limg images in front of the argument list limg is consummed by the operation.
Definition: freia-utils.c:1234
int dag_computation_count(const dag)
return the number of actual operations in dag d.
Definition: dag-utils.c:665
list freia_trpx_compile_calls(string, dag, sequence, list, const hash_table, hash_table, const set, FILE *, set, int)
freia_terapix.c
void dag_compute_outputs(dag, const hash_table, const set, const list, bool)
(re)compute the list of GLOBAL input & output images for this dag ??? BUG the output is rather an app...
Definition: dag-utils.c:2073
bool freia_image_variable_p(const entity)
rather approximative?
Definition: freia-utils.c:768
void freia_insert_added_stats(list, list, bool)
insert statements to actual code sequence in "ls" BEWARE that ls is assumed to be in reverse order....
Definition: freia-utils.c:1185
void freia_hack_fix_global_ins_outs(dag, dag)
catch some cases of missing outs between splits...
Definition: dag-utils.c:2166
int freia_substitute_by_helper_call(dag, set, set, list, const string, list, set, int)
substitute those statement in ls that are in dag d and accelerated by a call to function_name(lparams...
Definition: freia-utils.c:1073
void dagvtx_nb_dump(FILE *, const string, const list)
Definition: dag-utils.c:176
statement freia_copy_image(const entity, const entity)
Definition: freia-utils.c:710
expression freia_get_nth_scalar_param(const dagvtx, int)
Definition: freia-utils.c:589
bool is_freia_alloc(const statement)
Definition: freia-utils.c:1002
string freia_compile(string, statement, string)
freia_compile: compile freia module & statement for target
Definition: freia.c:785
bool freia_convolution_p(dagvtx)
is it the convolution special case?
Definition: freia-utils.c:1441
list dag_split_connected_components(dag, set)
build connected components
Definition: dag-utils.c:3035
int freia_max_pixel_value(void)
Definition: freia-utils.c:594
void dag_remove_vertex(dag, const dagvtx)
remove vertex v from dag d.
Definition: dag-utils.c:570
int hwac_freia_api_index(const string)
returns the index of the description of an AIPO function
Definition: freia-utils.c:471
const freia_api_t * get_freia_api(int)
Definition: freia-utils.c:477
void freia_close_dep_cache(void)
Definition: freia-utils.c:915
bool freia_sigmac_compiler(const string)
bool dagvtx_is_measurement_p(const dagvtx)
returns whether the vertex is an image measurement operation.
Definition: dag-utils.c:623
list freia_opencl_compile_calls(string, dag, sequence, list, const hash_table, hash_table, const set, FILE *, set, int, hash_table)
freia_opencl.c
void freia_shuffle_move_forward(statement)
list freia_extract_params(const int, list, string_buffer, string_buffer, hash_table, int *)
returns an allocated expression list of the parameters only (i.e.
Definition: freia-utils.c:613
list freia_aipo_compile_calls(string, dag, list, const hash_table, hash_table, int)
freia_aipo.c
Definition: freia_aipo.c:49
bool freia_assignment_p(const entity)
tell whether it is an assignment to ignore?
Definition: freia-utils.c:703
dag freia_build_dag(string, list, int, const hash_table, const set, const list, bool)
build a full dag from list of statements ls.
Definition: dag-utils.c:2476
bool is_freia_dealloc(const statement)
Definition: freia-utils.c:1007
bool dagvtx_other_stuff_p(const dagvtx)
a vertex with a non AIPO or image related statement.
Definition: dag-utils.c:76
bool freia_is_transpose_call(statement)
Detect a call to a se transposition function and transpose the arguments.
Definition: freia.c:499
bool freia_spoc_compiler(const string)
Warning! Do not modify this file that is automatically generated!
string dagvtx_to_string(const dagvtx)
dag-utils.c
Definition: dag-utils.c:49
void set_append_vertex_statements(set, list)
Definition: dag-utils.c:2385
string dagvtx_compact_operation(const dagvtx)
Definition: dag-utils.c:140
void dag_statements(set, const dag)
build the set of actual statements in d
Definition: dag-utils.c:64
list dag_connected_component(dag, list *, bool(*)(const dagvtx, const set, const dag))
extract a sublist of lv which is a connected component.
Definition: dag-utils.c:2939
bool entity_freia_api_p(const entity)
returns whether the entity is a freia API (AIPO) function.
Definition: freia-utils.c:806
void dagvtx_dump(FILE *, const string, const dagvtx)
for dag debug.
Definition: dag-utils.c:186
void dag_dot(FILE *, const string, const dag, const list, const list)
output dag in dot format, for debug or show
Definition: dag-utils.c:409
bool freia_terapix_compiler(const string)
list freia_spoc_compile_calls(string, dag, sequence, list, const hash_table, hash_table, const set, FILE *, set, int)
freia_spoc.c
Definition: freia_spoc.c:2247
bool freia_unroll_while(const string)
freia_transformations.c
statement dagvtx_statement(const dagvtx)
return statement if any, or NULL (for input nodes).
Definition: dag-utils.c:56
void dag_dot_dump_prefix(const string, const string, int, const dag, const list, const list)
Definition: dag-utils.c:504
bool freia_aipo_terapix_implemented(const freia_api_t *)
whether api available with Ter@pix
Definition: freia-utils.c:1426
int freia_aipo_count(dag, int *, int *)
Definition: freia-utils.c:1823
list dag_fix_image_reuse(dag, hash_table, const hash_table)
fix intermediate image reuse in dag
Definition: dag-utils.c:2779
void dag_consistency_asserts(dag)
do some consistency checking...
Definition: dag-utils.c:531
bool freia_opencl_compiler(const string)
bool remove_simple_scalar_pointers(const string)
call freia_ok(void)
build all is well freia constant
Definition: freia-utils.c:695
void hwac_replace_statement(statement, call, bool)
replace statement contents with call to c, or continue if kill
Definition: freia-utils.c:720
list dag_vertex_preds(const dag, const dagvtx)
return target predecessor vertices as a list.
Definition: dag-utils.c:680
list freia_get_vertex_params(const dagvtx)
Definition: freia-utils.c:578
void dag_dot_dump(const string, const string, const dag, const list, const list)
generate a "dot" format from a dag to a file.
Definition: dag-utils.c:488
bool freia_remove_scalar_ww_deps(const string)
string what_operation(const _int type)
Definition: freia-utils.c:499
list freia_allocate_new_images_if_needed(list, list, const hash_table, const hash_table, const hash_table)
insert image allocation if needed, for intermediate image inserted before if an image is used only tw...
Definition: freia-utils.c:1650
list dag_split_on_scalars(const dag, bool(*)(const dagvtx), dagvtx(*)(const list, bool), gen_cmp_func_t, void(*)(const dag), const set)
split a dag on scalar dependencies only, with a greedy heuristics.
Definition: dag-utils.c:2823
void freia_init_dep_cache(void)
Definition: freia-utils.c:909
expression freia_transpose_kernel(const expression)
Transpose a structuring element expression.
Definition: freia.c:479
_int dagvtx_opid(const dagvtx)
Definition: dag-utils.c:121
const freia_api_t * hwac_freia_api(const char *)
freia-utils.c
Definition: freia-utils.c:455
_int dagvtx_optype(const dagvtx)
Definition: dag-utils.c:116
string dagvtx_operation(const dagvtx)
Definition: dag-utils.c:134
dagvtx copy_dagvtx_norec(dagvtx)
copy a vertex, but without its successors.
Definition: dag-utils.c:611
set freia_compute_current_output_images(void)
Definition: freia-utils.c:1885
string what_operation_shape(const _int type)
SPoC: set shape depending on hardware component used by vertex.
Definition: freia-utils.c:518
bool freia_aipo_compiler(const string)
bool same_constant_parameters(const dagvtx, const dagvtx)
tell whether v1 and v2 point to statements with the same parameters.
Definition: freia-utils.c:1014
bool single_image_assignement_p(dag)
??? I'm unsure about what happens to dead code in the pipeline...
Definition: dag-utils.c:2217
string helper_file_name(string, string)
return malloc'ed "foo.database/Src/%{module}_helper_functions.c" should it depend on the target?...
Definition: freia-utils.c:2029
list freia_get_params(const freia_api_t *, list)
get freia further parameters, skipping image ones
Definition: freia-utils.c:569
bool freia_scalar_rw_dep(const statement, const statement, list *)
Definition: freia-utils.c:929
void freia_dag_optimize(dag, hash_table, list *, list *)
remove dead image operations.
Definition: dag-utils.c:1416
list freia_mppa_compile_calls(string, dag, sequence, list, const hash_table, hash_table, const set, FILE *, set, int)
freia_mppa.c
void dag_dump(FILE *, const string, const dag)
for dag debug
Definition: dag-utils.c:212
bool freia_extract_kernel_vtx(dagvtx, bool, intptr_t *, intptr_t *, intptr_t *, intptr_t *, intptr_t *, intptr_t *, intptr_t *, intptr_t *, intptr_t *)
vertex-based version
Definition: freia-utils.c:2012
entity freia_create_helper_function(const string, list)
Definition: freia-utils.c:1030
void dag_append_vertex(dag, dagvtx)
append new vertex nv to dag d.
Definition: dag-utils.c:632
const freia_api_t * get_freia_api_vtx(dagvtx)
Definition: freia-utils.c:483
void dag_cleanup_other_statements(dag)
remove unneeded statements? you must know they are really un-needed!
Definition: dag-utils.c:2191
bool dag_no_image_operation(dag)
tell whether we have something to do with images ??? hmmm...
Definition: dag-utils.c:2500
entity dagvtx_image(const dagvtx)
return the produced image or NULL
Definition: dag-utils.c:82
bool freia_convolution_width_height(dagvtx, _int *, _int *, bool)
get width & height of convolution
Definition: freia-utils.c:1449
bool freia_statement_aipo_call_p(const statement)
returns whether the statement is a FREIA call.
Definition: freia-utils.c:814
set freia_compute_output_images(entity, statement)
Definition: freia-utils.c:1866
hash_table freia_build_image_occurrences(statement, set, hash_table, const hash_table)
Definition: freia-utils.c:1388
int dagvtx_ordering(const dagvtx *, const dagvtx *)
Definition: dag-utils.c:148
intptr_t _int
_INT
Definition: newgen_types.h:53
int(* gen_cmp_func_t)(const void *, const void *)
Definition: newgen_types.h:114
#define intptr_t
Definition: stdint.in.h:294
internally defined structure.
Definition: string_buffer.c:47
FI: I do not understand why the type is duplicated at the set level.
Definition: set.c:59
The structure used to build lists in NewGen.
Definition: newgen_list.h:41
FREIA API function name -> SPoC hardware description (and others?)
Definition: freia.h:71