From 6007308ccd22d3c9b68fdc688f92a91f80769a18 Mon Sep 17 00:00:00 2001
From: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
Date: Tue, 29 Jun 2010 18:34:00 -0400
Subject: [PATCH] [#2524] Base classes for serialization

---
 sflphone-common/src/config/engine.cpp     | 86 +++++++++++++++++++++++
 sflphone-common/src/config/engine.h       | 55 +++++++++++++++
 sflphone-common/src/config/serializable.h | 49 +++++++++++++
 3 files changed, 190 insertions(+)
 create mode 100644 sflphone-common/src/config/engine.cpp
 create mode 100644 sflphone-common/src/config/engine.h
 create mode 100644 sflphone-common/src/config/serializable.h

diff --git a/sflphone-common/src/config/engine.cpp b/sflphone-common/src/config/engine.cpp
new file mode 100644
index 0000000000..4074552118
--- /dev/null
+++ b/sflphone-common/src/config/engine.cpp
@@ -0,0 +1,86 @@
+/*
+ *  Copyright (C) 2004, 2005, 2006, 2009, 2008, 2009, 2010 Savoir-Faire Linux Inc.
+ *  Author: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
+ *
+ *  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, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *  Additional permission under GNU GPL version 3 section 7:
+ *
+ *  If you modify this program, or any covered work, by linking or
+ *  combining it with the OpenSSL project's OpenSSL library (or a
+ *  modified version of that library), containing parts covered by the
+ *  terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
+ *  grants you additional permission to convey the resulting work.
+ *  Corresponding Source for a non-source form of such a combination
+ *  shall include the source code for the parts of OpenSSL used as well
+ *  as that of the covered work.
+ */
+
+
+#include "engine.h"
+
+
+/* Set a generic writer. */
+void *ext = ...;
+int write_handler(void *ext, char *buffer, int size) {
+
+  int error = 0;
+
+  /*
+       ...
+       Write `size` bytes.
+       ...
+  */
+  return error ? 0 : 1;
+}
+
+
+Engine::Engine() 
+{
+  open();
+}
+
+Engine::~Engine() 
+{
+  close();
+}
+
+void Engine::open() 
+{
+
+  yaml_emitter_initialize(&emitter);
+
+  yaml_emitter_set_output(&emitter, write_handler, ext);
+
+  yaml_stream_start_event_initialize(&event, YAML_UTF8_ENCODING);
+  if (!yaml_emitter_emit(&emitter, &event))
+    return;
+
+}
+
+void Engine::close() {
+
+  /* Create and emit the STREAM-END event. */
+  yaml_stream_end_event_initialize(&event);
+  if (!yaml_emitter_emit(&emitter, &event))
+    return;
+
+  /* Destroy the Emitter object. */
+  yaml_emitter_delete(&emitter);
+
+}
+
+void Engine::write() {}
+
diff --git a/sflphone-common/src/config/engine.h b/sflphone-common/src/config/engine.h
new file mode 100644
index 0000000000..014116872c
--- /dev/null
+++ b/sflphone-common/src/config/engine.h
@@ -0,0 +1,55 @@
+/*
+ *  Copyright (C) 2004, 2005, 2006, 2009, 2008, 2009, 2010 Savoir-Faire Linux Inc.
+ *  Author: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
+ *
+ *  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, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *  Additional permission under GNU GPL version 3 section 7:
+ *
+ *  If you modify this program, or any covered work, by linking or
+ *  combining it with the OpenSSL project's OpenSSL library (or a
+ *  modified version of that library), containing parts covered by the
+ *  terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
+ *  grants you additional permission to convey the resulting work.
+ *  Corresponding Source for a non-source form of such a combination
+ *  shall include the source code for the parts of OpenSSL used as well
+ *  as that of the covered work.
+ */
+
+#ifndef __ENGINE_H__
+#define __ENGINE_H__
+
+#include <yaml.h>
+
+class Engine {
+
+ public:
+
+  Engine();
+
+  ~Engine();
+
+  void open();
+
+  void write();
+
+ private:
+
+  yaml_emitter_t emitter;
+
+  yaml_event_t event;
+};
+
+#endif
diff --git a/sflphone-common/src/config/serializable.h b/sflphone-common/src/config/serializable.h
new file mode 100644
index 0000000000..781b3a45be
--- /dev/null
+++ b/sflphone-common/src/config/serializable.h
@@ -0,0 +1,49 @@
+/*
+ *  Copyright (C) 2004, 2005, 2006, 2009, 2008, 2009, 2010 Savoir-Faire Linux Inc.
+ *  Author: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
+ *
+ *  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, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *  Additional permission under GNU GPL version 3 section 7:
+ *
+ *  If you modify this program, or any covered work, by linking or
+ *  combining it with the OpenSSL project's OpenSSL library (or a
+ *  modified version of that library), containing parts covered by the
+ *  terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
+ *  grants you additional permission to convey the resulting work.
+ *  Corresponding Source for a non-source form of such a combination
+ *  shall include the source code for the parts of OpenSSL used as well
+ *  as that of the covered work.
+ */
+
+#ifndef __SERIALIZABLE_H__
+#define __SERIALIZABLE_H__
+
+
+class Engine;
+
+class Serializable {
+
+ public:
+
+  Serializable();
+
+  ~Serializable();
+
+  virtual void Serialize(Engine *engine) = 0;
+
+ private:
+
+};
-- 
GitLab