gKitGL
|
00001 00002 #ifndef _IORESOURCE_H 00003 #define _IORESOURCE_H 00004 00005 #include <cassert> 00006 00007 #include "IOFileManager.h" 00008 00009 00010 namespace gk { 00011 00012 //! utilisation interne. nom + infos pour un objet importe par un IOManager. 00013 class IOName 00014 { 00015 IOFileInfo m_handle; 00016 std::string m_name; 00017 00018 public: 00019 //! constructeur par defaut. 00020 IOName( ) 00021 : 00022 m_handle(), 00023 m_name() 00024 {} 00025 00026 //! constructeur, descripteur du fichier et nom de la ressource. 00027 IOName( const IOFileInfo& handle, const std::string& name ) 00028 : 00029 m_handle(handle), 00030 m_name(name) 00031 {} 00032 00033 ~IOName( ) {} 00034 00035 //! necessaire pour l'insertion dans une std::map, comparaison sur le nom uniquement. 00036 bool operator<( const IOName& b ) const 00037 { 00038 assert(m_handle.file != NULL); 00039 assert(b.m_handle.file != NULL); 00040 00041 const int cmp= m_handle.file->filename.compare(b.m_handle.file->filename); 00042 if(cmp < 0) 00043 return true; 00044 else if(cmp > 0) 00045 return false; 00046 return (m_name < b.m_name); 00047 } 00048 00049 //! renvoie le nom du fichier associe a la ressource. 00050 const std::string& filename( ) const 00051 { 00052 return m_handle.filename(); 00053 } 00054 00055 //! renvoie le nom de l'objet associe a la ressource. 00056 const std::string name( ) const 00057 { 00058 return m_name; 00059 } 00060 00061 //! renvoie le descripteur de fichier associe a la ressource. 00062 IOFileInfo& handle( ) 00063 { 00064 return m_handle; 00065 } 00066 }; 00067 00068 00069 //! classe de base des resources importees depuis un fichier, referencees par l'application, proprietes du gk::IOManager. 00070 class IOResource 00071 { 00072 // non copyable 00073 IOResource( const IOResource& ); 00074 IOResource& operator=( const IOResource& ); 00075 00076 public: 00077 IOResource( ) {} 00078 00079 virtual ~IOResource( ) {} 00080 }; 00081 00082 } // namespace 00083 00084 #endif