00001 /*-------------------------------------------------------------------- 00002 * 00003 * (C) Copyright Koninklijke Philips Electronics NV 2006. 00004 * All rights reserved. This software is licensed under the terms of 00005 * version 2.1 of the GNU Lesser General Public License as published 00006 * by the Free Software Foundation. For licensing and warranty 00007 * information, see the file COPYING in the main directory. 00008 * 00009 *------------------------------------------------------------------*/ 00010 00011 #ifndef RTE_H 00012 #define RTE_H 00013 00014 #include <iostream> 00015 00016 class rteNetwork; 00017 class rteProcess; 00018 class rteFifo; 00019 class rteSelect; 00020 00021 class NetworkImpl; 00022 class ProcessImpl; 00023 class FifoImpl; 00024 class SelectImpl; 00025 00026 class ProcessNetwork; 00027 00028 class Rte 00029 { 00030 public: 00031 Rte(); 00032 virtual ~Rte(); 00033 00034 virtual rteNetwork* create(NetworkImpl& n) = 0; 00035 virtual rteProcess* create(ProcessImpl& p) = 0; 00036 virtual rteFifo* create(FifoImpl& f) = 0; 00037 virtual rteSelect* create(SelectImpl& s) = 0; 00038 00039 virtual void start(ProcessNetwork& n) = 0; 00040 00041 virtual void setCout(std::ostream& o) = 0; 00042 virtual void setCerr(std::ostream& o) = 0; 00043 virtual void setCin(std::istream& o) = 0; 00044 virtual std::ostream& cout () = 0; 00045 virtual std::ostream& cerr () = 0; 00046 virtual std::istream& cin () = 0; 00047 }; 00048 00049 void start(ProcessNetwork& n); 00050 00051 Rte* newRte(); 00052 00053 #endif