Top |
Functions
void | (*AnjutaAutogenFunc) () |
void | (*AnjutaAutogenOutputFunc) () |
AnjutaAutogen * | anjuta_autogen_new () |
gboolean | anjuta_autogen_write_definition_file () |
void | anjuta_autogen_set_library_path () |
void | anjuta_autogen_clear_library_path () |
GList * | anjuta_autogen_get_library_paths () |
gboolean | anjuta_autogen_set_input_file () |
gboolean | anjuta_autogen_set_output_file () |
gboolean | anjuta_autogen_set_output_callback () |
gboolean | anjuta_autogen_execute () |
gboolean | anjuta_check_autogen () |
Description
GNU autogen is a program generating a text file from a template and a definition file. The template contains fixed text and variables those will be replaced under the control of the definition file.
By example from the following definition file
AutoGen Definitions .; list = { list_element = alpha; list_info = "some alpha stuff"; }; list = { list_info = "more beta stuff"; list_element = beta; }; list = { list_element = omega; list_info = "final omega stuff"; }
And the following template
[+ AutoGen5 template +] typedef enum {[+ FOR list "," +] IDX_[+ (string-upcase! (get "list_element")) +][+ ENDFOR list +] } list_enum;
Autogen generates
typedef enum { IDX_ALPHA, IDX_BETA, IDX_OMEGA } list_enum;
The template file can be quite complex, you can read autogen documentation
here.The AnjutaAutogen object takes care of writing the definition file from a hash table and call autogen. The output can be written in a file or passed to a callback function. Autogen is executed asynchronously, so there is another callback function called when the processing is completed.
Functions
AnjutaAutogenFunc ()
void (*AnjutaAutogenFunc) (AnjutaAutogen *autogen
,gpointer data
);
This function is called when the autogen process is completed.
AnjutaAutogenOutputFunc ()
void (*AnjutaAutogenOutputFunc) (const gchar *output
,gpointer data
);
This function is called each time there is new data from autogen.
anjuta_autogen_write_definition_file ()
gboolean anjuta_autogen_write_definition_file (AnjutaAutogen *this
,GHashTable *values
,GError **error
);
Write the autogen definition file. The definition file defined variables those will be used, typically replaced, in the template files.
The hash table keys are the names of the variables. The name can include an index in square bracket, by example "members[0]". All values are strings but but they could include children using braces, by example "{count=2; list="aa bb"}".
The file is created in a temporary directory and removed when the object is destroyed.
Parameters
this |
A AnjutaAutogen object |
|
values |
A hash table containing all definitions. |
[element-type utf8 utf8] |
error |
Error propagation and reporting |
anjuta_autogen_set_library_path ()
void anjuta_autogen_set_library_path (AnjutaAutogen *this
,const gchar *directory
);
Add a new directory in the list of autogen libraries path.
Autogen can include files. These included file will be searched by default in the same directory than the template file. This functions allows you to add other directories.
anjuta_autogen_clear_library_path ()
void
anjuta_autogen_clear_library_path (AnjutaAutogen *this
);
Remove all library pathes.
anjuta_autogen_get_library_paths ()
GList *
anjuta_autogen_get_library_paths (AnjutaAutogen *this
);
Get the list of all directories searched for files included in the autogen templates.
Returns
A list of directories. The content and the list itself are owned by the AnjutaAutogen object and should not be modified or freed.
[element-type gchar*][transfer none]
anjuta_autogen_set_input_file ()
gboolean anjuta_autogen_set_input_file (AnjutaAutogen *this
,const gchar *filename
,const gchar *start_marker
,const gchar *end_marker
);
Read an autogen template file, optionally adding autogen markers.
To be recognized as an autogen template, the first line has to contain:
the start marker
"autogen5 template"
the end marker
These markers are a custom sequence of up to 7 characters delimiting the start and the end of autogen variables and macros.
This function can add this line using the value of start_marker
and
end_marker
. If this line is already present in the file,
start_marker
and end_marker
must be NULL
.
Parameters
this |
A AnjutaAutogen object |
|
filename |
name of the input template file |
|
start_marker |
start marker string. |
[allow-none] |
end_marker |
end marker string. |
[allow-none] |
anjuta_autogen_set_output_file ()
gboolean anjuta_autogen_set_output_file (AnjutaAutogen *this
,const gchar *filename
);
Define the name of the generated file.
anjuta_autogen_set_output_callback ()
gboolean anjuta_autogen_set_output_callback (AnjutaAutogen *this
,AnjutaAutogenOutputFunc func
,gpointer user_data
,GDestroyNotify destroy
);
Define that autogen output should be send to a function as soon as it arrives.
Parameters
this |
A AnjutaAutogen object |
|
func |
Function call each time we get new data from autogen |
|
user_data |
User data to pass to |
[allow-none] |
destroy |
Function call when the process is complete to free user data |
anjuta_autogen_execute ()
gboolean anjuta_autogen_execute (AnjutaAutogen *this
,AnjutaAutogenFunc func
,gpointer data
,GError **error
);
Asynchronously execute autogen to generate the output, calling func
when the
process is completed.
Parameters
this |
A AnjutaAutogen object |
|
func |
A function called when autogen is terminated. |
[scope async][allow-none] |
data |
User data to pass to |
[allow-none] |
error |
Error propagation and reporting. |
[allow-none] |