Crazy Eddie's GUI System  0.8.4
CompositeResourceProvider.h
00001 /*******************************************************************************
00002 Created:  14.07.2011
00003 Author:   Hans Mackowiak (Hanmac) hanmac@gmx.de
00004 *******************************************************************************/
00005 /***************************************************************************
00006  Copyright (C) 2004 - 2011 Paul D Turner & The CEGUI Development Team
00007 
00008  Permission is hereby granted, free of charge, to any person obtaining
00009  a copy of this software and associated documentation files (the
00010  "Software"), to deal in the Software without restriction, including
00011  without limitation the rights to use, copy, modify, merge, publish,
00012  distribute, sublicense, and/or sell copies of the Software, and to
00013  permit persons to whom the Software is furnished to do so, subject to
00014  the following conditions:
00015 
00016  The above copyright notice and this permission notice shall be
00017  included in all copies or substantial portions of the Software.
00018 
00019  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
00020  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00021  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
00022  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
00023  OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
00024  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
00025  OTHER DEALINGS IN THE SOFTWARE.
00026 ***************************************************************************/
00027 #ifndef _CEGUICompositeResourceProvider_h_
00028 #define _CEGUICompositeResourceProvider_h_
00029 #include "CEGUI/Base.h"
00030 #include "CEGUI/IteratorBase.h"
00031 #include "CEGUI/MemoryAllocation.h"
00032 #include "CEGUI/ResourceProvider.h"
00033 #include <map>
00034 
00035 #if defined(_MSC_VER)
00036 #   pragma warning(push)
00037 #   pragma warning(disable : 4251)
00038 #endif
00039 
00040 // Start of CEGUI namespace section
00041 namespace CEGUI
00042 {
00043 class CEGUIEXPORT CompositeResourceProvider : public ResourceProvider
00044 {
00045 public:
00046   /*************************************************************************
00047     Construction and Destruction
00048   *************************************************************************/
00049   CompositeResourceProvider();
00050   ~CompositeResourceProvider(void);
00064   void add(ResourceProvider *prov,const String& name);
00075   template<typename T>void add(const String& name)
00076   {
00077     add(CEGUI_NEW_AO T,name);
00078   }
00089   void remove(ResourceProvider *prov);
00100   void remove(const String& name);
00111   ResourceProvider* get(const String& name);
00112 
00113   void loadRawDataContainer(const String& filename,
00114         RawDataContainer& output,
00115         const String& resourceGroup);
00116   size_t getResourceGroupFileNames(std::vector<String>& out_vec,
00117          const String& file_pattern,
00118          const String& resource_group);
00119 protected:
00120   typedef std::map<String, ResourceProvider*, StringFastLessCompare> Providermap;
00121   Providermap  d_providerlist;
00122 public:
00123   typedef ConstMapIterator<Providermap> ProviderIterator;
00124   ProviderIterator  getIterator() const;
00125 };
00126 
00127 } // End of  CEGUI namespace section
00128 
00129 #if defined(_MSC_VER)
00130 #   pragma warning(pop)
00131 #endif
00132 
00133 #endif  // end of guard _CEGUICompositeResourceProvider_h_
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends