// -*- coding: utf-8 -*- // // contacts.cxx --- FlightGear classes holding add-on contact metadata // Copyright (C) 2018 Florent Rougon // // 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 2 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., // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include #include #include #include #include #include #include "addon_fwd.hxx" #include "contacts.hxx" using std::string; using simgear::enumValue; namespace flightgear { namespace addons { // *************************************************************************** // * Contact * // *************************************************************************** Contact::Contact(ContactType type, string name, string email, string url) : _type(type), _name(std::move(name)), _email(std::move(email)), _url(std::move(url)) { } ContactType Contact::getType() const { return _type; } string Contact::getTypeString() const { switch (getType()) { case ContactType::author: return "author"; case ContactType::maintainer: return "maintainer"; default: throw sg_error("unexpected value for member of " "flightgear::addons::ContactType: " + std::to_string(enumValue(getType()))); } } string Contact::getName() const { return _name; } void Contact::setName(const string& name) { _name = name; } string Contact::getEmail() const { return _email; } void Contact::setEmail(const string& email) { _email = email; } string Contact::getUrl() const { return _url; } void Contact::setUrl(const string& url) { _url = url; } // Static method void Contact::setupGhost(nasal::Hash& addonsModule) { nasal::Ghost::init("addons.Contact") .member("name", &Contact::getName) .member("email", &Contact::getEmail) .member("url", &Contact::getUrl); } // *************************************************************************** // * Author * // *************************************************************************** Author::Author(string name, string email, string url) : Contact(ContactType::author, name, email, url) { } // Static method void Author::setupGhost(nasal::Hash& addonsModule) { nasal::Ghost::init("addons.Author") .bases(); } // *************************************************************************** // * Maintainer * // *************************************************************************** Maintainer::Maintainer(string name, string email, string url) : Contact(ContactType::maintainer, name, email, url) { } // Static method void Maintainer::setupGhost(nasal::Hash& addonsModule) { nasal::Ghost::init("addons.Maintainer") .bases(); } } // of namespace addons } // of namespace flightgear