49 #ifndef __MANAGED_DATA_H__
50 #define __MANAGED_DATA_H__
126 template <
class TData >
151 if (
_data->decRef() == 0 ) {
188 template<
typename TData >
189 TData *
getResource(
const std::string & name, std::map< std::string, TData * > & map ) {
190 if ( map.find( name ) == map.end() ) {
211 template<
typename T,
typename TData>
212 T*
loadManagedData(
const std::string & fileName, TData * (*reader)(
const std::string & ) ) {
213 TData * data = getResource<TData>( fileName, TData::RESOURCES );
215 data = (*reader)( fileName );
217 TData::RESOURCES[ fileName ] = data;
223 return new T( data );
237 template <
typename TData >
240 typename std::map< std::string, TData *>::iterator itr = map.begin();
241 for ( ; itr != map.end(); ++itr ) {
242 if ( itr->second == data ) {
The core namespace. All elements of Menge are contained in this namespace.
Definition: AgentGenerator.cpp:43
int _refCount
The number of data wrappers using this managed data.
Definition: ManagedData.h:115
Sets up the proper compiler directives for platform and dll export/import.
T * loadManagedData(const std::string &fileName, TData *(*reader)(const std::string &))
Templated function for loading a managed data resource.
Definition: ManagedData.h:212
bool isUnreferenced() const
Reports if the data is referenced.
Definition: ManagedData.h:109
A wrapper for managed data - automatically handles referencing and deletion of managed data...
Definition: ManagedData.h:127
The interface for managed data (essentially smart poitners).
Definition: ManagedData.h:61
int incRef()
Increment references to the managed data.
Definition: ManagedData.h:86
void freeData()
Technically, decrements the data's reference count and garbage collects it when necessary.
Definition: ManagedData.h:150
virtual ~ManagedData()
Virtual destructor.
Definition: ManagedData.h:76
ManagedDataWrapper(TData *data)
Constructor.
Definition: ManagedData.h:137
ManagedData()
Constructor.
Definition: ManagedData.h:66
void removeResource(TData *data, std::map< std::string, TData * > &map)
Tempalted function for removing a resource from the managed databse.
Definition: ManagedData.h:238
int decRef()
Decrement references to the managed data.
Definition: ManagedData.h:97
TData * getResource(const std::string &name, std::map< std::string, TData * > &map)
Templated function for acquiring a managed data resource from its name.
Definition: ManagedData.h:189
TData * _data
The managed data for this wrapper.
Definition: ManagedData.h:160