00001
00002 #ifndef _IOEFFECT_H
00003 #define _IOEFFECT_H
00004
00005 #include "IOManager.h"
00006 #include "Effect.h"
00007
00008
00009 namespace gk {
00010
00011
00012 class EffectIO : public IOManager<Effect>
00013 {
00014
00015 EffectIO( const EffectIO& );
00016 EffectIO& operator=( const EffectIO& );
00017
00018
00019 EffectIO( )
00020 :
00021 IOManager<Effect>( )
00022 {}
00023
00024 public:
00025
00026 static
00027 Effect *read( const std::string& filename, const std::string& name= "" )
00028 {
00029
00030 Effect *effect= manager().find(filename, name);
00031 if(effect != NULL)
00032 return effect;
00033
00034
00035 effect= new Effect;
00036 if(effect->read(filename) < 0)
00037 {
00038 delete effect;
00039 return NULL;
00040 }
00041
00042
00043 return manager().insert(effect, filename, name);
00044 }
00045
00046 static
00047 EffectIO& manager( )
00048 {
00049 static EffectIO manager;
00050 return manager;
00051 }
00052 };
00053
00054 }
00055
00056 #endif