/* * Verrückte Turing-Maschinen — A turing complete game * Copyright (C) 2016 Christian Fraß * * 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 . */ module mod_vtm_aufbau { /** * @author kcf */ export function aktor_exportieren(aktor : schnittstelle_aktor) : any { if (aktor instanceof klasse_erzeuger) { return { "art": "erzeuger", "angaben": aktor.exportieren() }; } else if (aktor instanceof klasse_annehmer) { return { "art": "annehmer", "angaben": aktor.exportieren() }; } else if (aktor instanceof klasse_verwerfer) { return { "art": "verwerfer", "angaben": aktor.exportieren() }; } else if (aktor instanceof klasse_befoerderer) { return { "art": "befoerderer", "angaben": aktor.exportieren() }; } else if (aktor instanceof klasse_schreiber) { return { "art": "schreiber", "angaben": aktor.exportieren() }; } else if (aktor instanceof klasse_leser) { return { "art": "leser", "angaben": aktor.exportieren() }; } else { let meldung : string = "unbehandelte Klasse"; throw (new Error(meldung)); } } /** * @author kcf */ export function aktor_importieren(aktor_roh : any) : schnittstelle_aktor { switch (aktor_roh["art"]) { case "erzeuger": { return klasse_erzeuger.importieren(aktor_roh["angaben"]); break; } case "annehmer": { return klasse_annehmer.importieren(aktor_roh["angaben"]); break; } case "verwerfer": { return klasse_verwerfer.importieren(aktor_roh["angaben"]); break; } case "befoerderer": { return klasse_befoerderer.importieren(aktor_roh["angaben"]); break; } case "schreiber": { return klasse_schreiber.importieren(aktor_roh["angaben"]); break; } case "leser": { return klasse_leser.importieren(aktor_roh["angaben"]); break; } default: { let meldung : string = "unbehandelte Art"; throw (new Error(meldung)); break; } } } }