1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
/**
* @file
* Header file to include when using the \e ExperimentReader class.
*/
/*
* Copyright (C) 2012 Otto-von-Guericke-Universität Magdeburg
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __EXPERIMENT_READER_H
#define __EXPERIMENT_READER_H
#include <glib.h>
#include <glib-object.h>
G_BEGIN_DECLS
#define EXPERIMENT_TYPE_READER \
(experiment_reader_get_type())
/**
* Cast instance pointer to \e ExperimentReader
*
* @param obj Object to cast to \e ExperimentReader
* @return \e obj casted to \e ExperimentReader
*/
#define EXPERIMENT_READER(obj) \
(G_TYPE_CHECK_INSTANCE_CAST((obj), EXPERIMENT_TYPE_READER, ExperimentReader))
#define EXPERIMENT_READER_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST((klass), EXPERIMENT_TYPE_READER, ExperimentReaderClass))
#define EXPERIMENT_IS_READER(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE((obj), EXPERIMENT_TYPE_READER))
#define EXPERIMENT_IS_READER_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE((klass), EXPERIMENT_TYPE_READER))
#define EXPERIMENT_READER_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS((obj), EXPERIMENT_TYPE_READER, ExperimentReaderClass))
/** @private */
typedef struct _ExperimentReaderPrivate ExperimentReaderPrivate;
/**
* \e ExperimentReader instance structure
*/
typedef struct _ExperimentReader {
GObject parent_instance; /**< Parent instance structure */
ExperimentReaderPrivate *priv; /**< @private */
} ExperimentReader;
/**
* \e ExperimentReader class structure
*/
typedef struct _ExperimentReaderClass {
GObjectClass parent_class; /**< Parent class structure */
} ExperimentReaderClass;
/** @private */
GType experiment_reader_get_type(void);
/*
* Callbacks
*/
/**
* Type of function to use for \e topic callbacks.
*
* @param reader \e ExperimentReader the information refers to
* @param topic_id Symbolic identifier of experiment \b topic
* @param start_time Beginning of first \b contribution in \e topic (milliseconds)
* @param end_time End of last \b contribution in \e topic (milliseconds)
* @param data Callback user data
*/
typedef void (*ExperimentReaderTopicCallback)(ExperimentReader *reader,
const gchar *topic_id,
gint64 start_time,
gint64 end_time,
gpointer data);
/**
* Structure describing a contribution. Every text-fragment identified by
* a distinct \e timepoint is considered a contribution.
*/
typedef struct {
gint64 start_time; /**< Contribution's start time in milliseconds */
gchar text[]; /**< Contribution's text content (part of the structure) */
} ExperimentReaderContrib;
/*
* API
*/
ExperimentReader *experiment_reader_new(const gchar *filename);
GList *experiment_reader_get_contributions_by_speaker(
ExperimentReader *reader,
const gchar *speaker);
GList *experiment_reader_get_contribution_by_time(
GList *contribs,
gint64 timept);
void experiment_reader_free_contributions(
GList *contribs);
void experiment_reader_foreach_greeting_topic(
ExperimentReader *reader,
ExperimentReaderTopicCallback callback,
gpointer userdata);
void experiment_reader_foreach_exp_initial_narrative_topic(
ExperimentReader *reader,
ExperimentReaderTopicCallback callback,
gpointer userdata);
void experiment_reader_foreach_exp_last_minute_phase_topic(
ExperimentReader *reader,
gint phase,
ExperimentReaderTopicCallback callback,
gpointer userdata);
void experiment_reader_foreach_farewell_topic(
ExperimentReader *reader,
ExperimentReaderTopicCallback callback,
gpointer userdata);
G_END_DECLS
#endif
|