[aravis/chunk: 1/6] chunk: start of chunk parser class implementation
- From: Emmanuel Pacaud <emmanuel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [aravis/chunk: 1/6] chunk: start of chunk parser class implementation
- Date: Mon, 18 Aug 2014 16:29:34 +0000 (UTC)
commit 3f07e22e0d3d42c7a4739e19384fe4ce690d7f4b
Author: Emmanuel Pacaud <emmanuel gnome org>
Date: Tue Jul 15 20:31:40 2014 +0200
chunk: start of chunk parser class implementation
src/Makefile.am | 2 +
src/arvchunkparser.c | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++
src/arvchunkparser.h | 60 +++++++++++++++++++
src/arvtypes.h | 1 +
4 files changed, 219 insertions(+), 0 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 3e00384..ac7eb0f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -68,6 +68,7 @@ ARAVIS_SRCS = \
arvdevice.c \
arvstream.c \
arvbuffer.c \
+ arvchunkparser.c \
arvgvinterface.c \
arvgvdevice.c \
arvgvstream.c \
@@ -130,6 +131,7 @@ ARAVIS_HDRS = \
arvdevice.h \
arvstream.h \
arvbuffer.h \
+ arvchunkparser.h \
arvgvinterface.h \
arvgvdevice.h \
arvgvstream.h \
diff --git a/src/arvchunkparser.c b/src/arvchunkparser.c
new file mode 100644
index 0000000..64994f4
--- /dev/null
+++ b/src/arvchunkparser.c
@@ -0,0 +1,156 @@
+/* Aravis - Digital camera library
+ *
+ * Copyright © 2009-2014 Emmanuel Pacaud
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * Author: Emmanuel Pacaud <emmanuel gnome org>
+ */
+
+/**
+ * SECTION: arvchunkparser
+ * @short_description: Parser for extraction of chunk data from buffers
+ *
+ * #ArvChunkParser provides a class for the instantiation of chunk parsers used
+ * for the extraction of chunk data stored in the stream payload.
+ */
+
+#include <arvchunkparser.h>
+
+enum {
+ ARV_CHUNK_PARSER_PROPERTY_0,
+ ARV_CHUNK_PARSER_PROPERTY_GENICAM,
+ ARV_CHUNK_PARSER_PROPERTY_LAST
+} ArvStreamProperties;
+
+static GObjectClass *parent_class = NULL;
+
+struct _ArvChunkParserPrivate {
+ ArvGc *genicam;
+};
+
+const char *
+arv_chunk_parser_get_string_feature_value (ArvChunkParser *parser, ArvBuffer *buffer, const char *feature)
+{
+ return NULL;
+}
+
+gint64
+arv_chunk_parser_get_integer_feature_value (ArvChunkParser *parser, ArvBuffer *buffer, const char *feature)
+{
+ return 0;
+}
+
+double
+arv_chunk_parser_get_float_feature_value (ArvChunkParser *parser, ArvBuffer *buffer, const char *feature)
+{
+ return 0.0;
+}
+
+/**
+ * arv_chunk_parser_new:
+ * @genicam: a #ArvGc
+ *
+ * Creates a new chunk_parser.
+ *
+ * Returns: a new #ArvChunkParser object
+ *
+ * Since: 0.3.3
+ */
+
+ArvChunkParser *
+arv_chunk_parser_new (ArvGc *genicam)
+{
+ ArvChunkParser *chunk_parser;
+
+ g_return_val_if_fail (ARV_IS_GC (genicam), NULL);
+
+ chunk_parser = g_object_new (ARV_TYPE_CHUNK_PARSER, "genicam", genicam, NULL);
+
+ return chunk_parser;
+}
+
+static void
+_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
+{
+ ArvChunkParser *parser = ARV_CHUNK_PARSER (object);
+
+ switch (prop_id) {
+ case ARV_CHUNK_PARSER_PROPERTY_GENICAM:
+ g_clear_object (&parser->priv->genicam);
+ parser->priv->genicam = g_object_ref (g_value_get_object (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
+{
+ ArvChunkParser *parser = ARV_CHUNK_PARSER (object);
+
+ switch (prop_id) {
+ case ARV_CHUNK_PARSER_PROPERTY_GENICAM:
+ g_value_set_object (value, parser->priv->genicam);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+arv_chunk_parser_init (ArvChunkParser *chunk_parser)
+{
+ chunk_parser->priv = G_TYPE_INSTANCE_GET_PRIVATE (chunk_parser, ARV_TYPE_CHUNK_PARSER,
ArvChunkParserPrivate);
+}
+
+static void
+_finalize (GObject *object)
+{
+ ArvChunkParser *chunk_parser = ARV_CHUNK_PARSER (object);
+
+ g_clear_object (&chunk_parser->priv->genicam);
+
+ parent_class->finalize (object);
+}
+
+static void
+arv_chunk_parser_class_init (ArvChunkParserClass *node_class)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (node_class);
+
+ g_type_class_add_private (node_class, sizeof (ArvChunkParserPrivate));
+
+ parent_class = g_type_class_peek_parent (node_class);
+
+ object_class->finalize = _finalize;
+ object_class->set_property = _set_property;
+ object_class->get_property = _get_property;
+
+ g_object_class_install_property (
+ object_class, ARV_CHUNK_PARSER_PROPERTY_GENICAM,
+ g_param_spec_object ("genicam", "genicam",
+ "Genicam instance", ARV_TYPE_GC,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)
+ );
+}
+
+G_DEFINE_TYPE (ArvChunkParser, arv_chunk_parser, G_TYPE_OBJECT)
diff --git a/src/arvchunkparser.h b/src/arvchunkparser.h
new file mode 100644
index 0000000..161b1c6
--- /dev/null
+++ b/src/arvchunkparser.h
@@ -0,0 +1,60 @@
+/* Aravis - Digital camera library
+ *
+ * Copyright © 2009-2014 Emmanuel Pacaud
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * Author: Emmanuel Pacaud <emmanuel gnome org>
+ */
+
+#ifndef ARV_CHUNK_PARSER_H
+#define ARV_CHUNK_PARSER_H
+
+#include <arvtypes.h>
+#include <arvgc.h>
+
+G_BEGIN_DECLS
+
+#define ARV_TYPE_CHUNK_PARSER (arv_chunk_parser_get_type ())
+#define ARV_CHUNK_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ARV_TYPE_CHUNK_PARSER,
ArvChunkParser))
+#define ARV_CHUNK_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ARV_TYPE_CHUNK_PARSER,
ArvChunkParserClass))
+#define ARV_IS_CHUNK_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ARV_TYPE_CHUNK_PARSER))
+#define ARV_IS_CHUNK_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ARV_TYPE_CHUNK_PARSER))
+#define ARV_CHUNK_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), ARV_TYPE_CHUNK_PARSER,
ArvChunkParserClass))
+
+typedef struct _ArvChunkParserPrivate ArvChunkParserPrivate;
+typedef struct _ArvChunkParserClass ArvChunkParserClass;
+
+struct _ArvChunkParser {
+ GObject object;
+
+ ArvChunkParserPrivate *priv;
+};
+
+struct _ArvChunkParserClass {
+ GObjectClass parent_class;
+};
+
+GType arv_chunk_parser_get_type (void);
+
+ArvChunkParser * arv_chunk_parser_new (ArvGc *genicam);
+const char * arv_chunk_parser_get_string_feature_value (ArvChunkParser *parser, ArvBuffer
*buffer, const char *feature);
+gint64 arv_chunk_parser_get_integer_feature_value (ArvChunkParser *parser, ArvBuffer
*buffer, const char *feature);
+double arv_chunk_parser_get_float_feature_value (ArvChunkParser *parser, ArvBuffer
*buffer, const char *feature);
+
+G_END_DECLS
+
+#endif
diff --git a/src/arvtypes.h b/src/arvtypes.h
index dbcd9f9..1b2721b 100644
--- a/src/arvtypes.h
+++ b/src/arvtypes.h
@@ -72,6 +72,7 @@ typedef struct _ArvInterface ArvInterface;
typedef struct _ArvDevice ArvDevice;
typedef struct _ArvStream ArvStream;
typedef struct _ArvBuffer ArvBuffer;
+typedef struct _ArvChunkParser ArvChunkParser;
typedef struct _ArvGvInterface ArvGvInterface;
typedef struct _ArvGvDevice ArvGvDevice;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]