gKitGL
IOResource.h
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
 All Classes Namespaces Functions Variables Typedefs Enumerator Friends