[latexila] PostProcessor: public functions for the vfuncs
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [latexila] PostProcessor: public functions for the vfuncs
- Date: Sun, 5 Oct 2014 16:28:18 +0000 (UTC)
commit 7d901526e2283d97e02eb54988b956a3ea6596b0
Author: Sébastien Wilmet <swilmet gnome org>
Date: Mon Sep 29 23:10:56 2014 +0200
PostProcessor: public functions for the vfuncs
docs/reference/latexila-sections.txt | 3 +
src/liblatexila/latexila-post-processor.c | 66 ++++++++++++++++++++++++++---
src/liblatexila/latexila-post-processor.h | 18 ++++----
3 files changed, 71 insertions(+), 16 deletions(-)
---
diff --git a/docs/reference/latexila-sections.txt b/docs/reference/latexila-sections.txt
index a589d6c..199f43e 100644
--- a/docs/reference/latexila-sections.txt
+++ b/docs/reference/latexila-sections.txt
@@ -143,6 +143,9 @@ latexila_post_processor_get_name_from_type
latexila_post_processor_get_type_from_name
latexila_post_processor_process_async
latexila_post_processor_process_finish
+latexila_post_processor_start
+latexila_post_processor_process_line
+latexila_post_processor_end
latexila_post_processor_get_messages
<SUBSECTION Standard>
LATEXILA_IS_POST_PROCESSOR
diff --git a/src/liblatexila/latexila-post-processor.c b/src/liblatexila/latexila-post-processor.c
index f72cc9e..5fe1eaa 100644
--- a/src/liblatexila/latexila-post-processor.c
+++ b/src/liblatexila/latexila-post-processor.c
@@ -323,7 +323,7 @@ read_stream_cb (GInputStream *stream,
line = g_string_free (pp->priv->line_buffer, FALSE);
pp->priv->line_buffer = NULL;
- LATEXILA_POST_PROCESSOR_GET_CLASS (pp)->process_line (pp, line);
+ latexila_post_processor_process_line (pp, line);
}
/* finished! */
@@ -366,7 +366,7 @@ read_stream_cb (GInputStream *stream,
lines[last_line] = NULL;
for (i = 0; lines[i] != NULL; i++)
- LATEXILA_POST_PROCESSOR_GET_CLASS (pp)->process_line (pp, lines[i]);
+ latexila_post_processor_process_line (pp, lines[i]);
g_free (lines);
}
@@ -428,7 +428,7 @@ latexila_post_processor_process_async (LatexilaPostProcessor *pp,
pp->priv->task = g_task_new (pp, cancellable, callback, user_data);
pp->priv->stream = g_object_ref (stream);
- LATEXILA_POST_PROCESSOR_GET_CLASS (pp)->start (pp, file);
+ latexila_post_processor_start (pp, file);
if (pp->priv->line_buffer != NULL)
{
@@ -456,7 +456,7 @@ latexila_post_processor_process_finish (LatexilaPostProcessor *pp,
g_task_propagate_boolean (G_TASK (result), NULL);
- LATEXILA_POST_PROCESSOR_GET_CLASS (pp)->end (pp);
+ latexila_post_processor_end (pp);
g_clear_object (&pp->priv->task);
g_clear_object (&pp->priv->stream);
@@ -469,11 +469,64 @@ latexila_post_processor_process_finish (LatexilaPostProcessor *pp,
}
/**
+ * latexila_post_processor_start:
+ * @pp: a #LatexilaPostProcessor.
+ * @file: the #GFile on which the build tool is run.
+ *
+ * Manually starts the post-processor.
+ *
+ * Not needed if you use latexila_post_processor_process_async().
+ */
+void
+latexila_post_processor_start (LatexilaPostProcessor *pp,
+ GFile *file)
+{
+ g_return_if_fail (LATEXILA_IS_POST_PROCESSOR (pp));
+
+ return LATEXILA_POST_PROCESSOR_GET_CLASS (pp)->start (pp, file);
+}
+
+/**
+ * latexila_post_processor_process_line:
+ * @pp: a #LatexilaPostProcessor.
+ * @line: (transfer full): a line, without the newline character(s).
+ *
+ * Manually processes a line. This function takes ownership of @line. Free with
+ * g_free() if you don't reuse the content.
+ *
+ * Not needed if you use latexila_post_processor_process_async().
+ */
+void
+latexila_post_processor_process_line (LatexilaPostProcessor *pp,
+ gchar *line)
+{
+ g_return_if_fail (LATEXILA_IS_POST_PROCESSOR (pp));
+
+ return LATEXILA_POST_PROCESSOR_GET_CLASS (pp)->process_line (pp, line);
+}
+
+/**
+ * latexila_post_processor_end:
+ * @pp: a #LatexilaPostProcessor.
+ *
+ * Manually ends the processing.
+ *
+ * Not needed if you use latexila_post_processor_process_async().
+ */
+void
+latexila_post_processor_end (LatexilaPostProcessor *pp)
+{
+ g_return_if_fail (LATEXILA_IS_POST_PROCESSOR (pp));
+
+ return LATEXILA_POST_PROCESSOR_GET_CLASS (pp)->end (pp);
+}
+
+/**
* latexila_post_processor_get_messages:
* @pp: a post-processor.
*
* Gets the filtered messages. Call this function only after calling
- * latexila_post_processor_process_finish().
+ * latexila_post_processor_process_finish() or latexila_post_processor_end().
*
* Another solution would have been to pass the #LatexilaBuildView to the
* post-processor, so the filtered messages can directly be outputed to the
@@ -494,7 +547,8 @@ latexila_post_processor_process_finish (LatexilaPostProcessor *pp,
*
* The current solution is "good enough". And "good enough" is... "good enough".
*
- * Returns: the tree of filtered messages.
+ * Returns: (transfer none): the tree of filtered messages. Element types:
+ * #LatexilaBuildMsg.
*/
const GQueue *
latexila_post_processor_get_messages (LatexilaPostProcessor *pp)
diff --git a/src/liblatexila/latexila-post-processor.h b/src/liblatexila/latexila-post-processor.h
index e0200fb..4816018 100644
--- a/src/liblatexila/latexila-post-processor.h
+++ b/src/liblatexila/latexila-post-processor.h
@@ -65,24 +65,14 @@ struct _LatexilaPostProcessorClass
{
GObjectClass parent_class;
- /* Start of processing.
- * @file is the GFile on which the build tool is run.
- */
void (* start) (LatexilaPostProcessor *pp,
GFile *file);
- /* The process_line function takes ownership of @line. Free with
- * g_free() if you don't reuse the content.
- */
void (* process_line) (LatexilaPostProcessor *pp,
gchar *line);
- /* End of processing. */
void (* end) (LatexilaPostProcessor *pp);
- /* Get the build messages. The elements are of type "LatexilaBuildMsg *".
- * This function is called after end().
- */
const GQueue * (* get_messages) (LatexilaPostProcessor *pp);
};
@@ -103,6 +93,14 @@ void latexila_post_processor_process_async (LatexilaP
void latexila_post_processor_process_finish (LatexilaPostProcessor *pp,
GAsyncResult *result);
+void latexila_post_processor_start (LatexilaPostProcessor *pp,
+ GFile *file);
+
+void latexila_post_processor_process_line (LatexilaPostProcessor *pp,
+ gchar *line);
+
+void latexila_post_processor_end (LatexilaPostProcessor *pp);
+
const GQueue * latexila_post_processor_get_messages (LatexilaPostProcessor *pp);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]