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