00001 00002 // 00003 // Copyright (C) 2006 James M. Lawrence. All rights reserved. 00004 // 00005 // software: esve-1.0.3 00006 // file: esve/kernel/Simple_Kernel.hxx 00007 // 00008 // Redistribution and use in source and binary forms, with or without 00009 // modification, are permitted provided that the following conditions 00010 // are met: 00011 // 00012 // 1. Redistributions of source code must retain the above copyright 00013 // notice, this list of conditions and the following disclaimer. 00014 // 00015 // 2. The origin of this software must not be misrepresented; you must 00016 // not claim that you wrote the original software. If you use this 00017 // software in a product, an acknowledgment in the product 00018 // documentation would be appreciated but is not required. 00019 // 00020 // 3. Altered source versions must be plainly marked as such, and must 00021 // not be misrepresented as being the original software. 00022 // 00023 // 4. The name of the author may not be used to endorse or promote 00024 // products derived from this software without specific prior written 00025 // permission. 00026 // 00027 // THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY, 00028 // AND WITH NO CLAIM AS TO ITS SUITABILITY FOR ANY PURPOSE. IN NO EVENT 00029 // SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM WHATSOEVER MADE IN CONNECTION 00030 // TO THIS SOFTWARE. 00031 // 00033 00034 #ifndef esve_kernel_Simple_Kernel_hxx 00035 #define esve_kernel_Simple_Kernel_hxx 00036 00037 #include <esve/message/Tick_Sender_Stowed.hxx> 00038 00039 namespace esve { namespace message { 00040 00041 class Update_Receiver ; 00042 00043 }} // namespace esve::message 00044 00045 namespace esve { namespace kernel { 00046 00047 class Handler ; 00048 class Emitter ; 00049 00050 }} // namespace esve::kernel 00051 00052 namespace esve { namespace kernel { 00053 00058 00059 class Simple_Kernel 00060 : virtual public message::Tick_Sender_Stowed 00061 { 00062 public: 00064 virtual int takeover() = 0 ; 00065 00068 virtual void add_emitter( Emitter & ) = 0 ; 00069 virtual void remove_emitter( Emitter & ) = 0 ; 00071 00074 virtual void add_uncached_emitter( Emitter & ) = 0 ; 00075 virtual void remove_uncached_emitter( Emitter & ) = 0 ; 00077 00080 virtual void add_handler( Handler & ) = 0 ; 00081 virtual void remove_handler( Handler & ) = 0 ; 00082 virtual void remove_all_handlers() = 0 ; 00084 00087 virtual 00088 void add_update_receiver( message::Update_Receiver & ) = 0 ; 00089 virtual 00090 void remove_update_receiver( message::Update_Receiver & ) = 0 ; 00091 virtual 00092 void remove_all_update_receivers() = 0 ; 00094 00097 virtual void add_driver_handler( Handler & ) = 0 ; 00098 virtual void remove_driver_handler( Handler & ) = 0 ; 00100 00101 virtual ~Simple_Kernel() = 0 ; 00102 00103 protected: 00104 Simple_Kernel() ; 00105 00106 private: 00107 Simple_Kernel( const Simple_Kernel & ) ; 00108 Simple_Kernel & operator=( const Simple_Kernel & ) ; 00109 } ; 00110 00111 }} // namespace esve::kernel 00112 00113 #endif 00114
1.3.4