44 #ifndef __RESOURCE_H__
45 #define __RESOURCE_H__
107 Resource(
const std::string & fileName ):_fileName(fileName), _refCount(0) {}
137 const std::string &
getName()
const {
return _fileName; }
147 int incRef() { _lock.lock();
int val = ++_refCount; _lock.release();
return val; }
158 int decRef() { _lock.lock();
int val = --_refCount; _lock.release();
return val; }
170 bool isUnreferenced()
const { _lock.lock();
bool val = _refCount <= 0; _lock.release();
return val; }
177 virtual const std::string & getLabel()
const = 0;
200 template <
class Rsrc >
227 if (
_data->isUnreferenced() ) {
240 if (
this != &ptr ) {
277 #endif // __RESOURCE_H__
Resource(const std::string &fileName)
Constructor.
Definition: Resource.h:107
The definition of a simple thrading lock.
int decRef()
Decrement references to the managed data.
Definition: Resource.h:158
The core namespace. All elements of Menge are contained in this namespace.
Definition: AgentGenerator.cpp:43
The basic class for all on-disk resources.
Sets up the proper compiler directives for platform and dll export/import.
bool operator==(const ResourcePtr< Rsrc > &ptr) const
Reports if to Resource pointers (of the same type) refer to the same data.
Definition: Resource.h:265
bool isUnreferenced() const
Reports if the data is referenced.
Definition: Resource.h:170
~ResourcePtr()
Destructor.
Definition: Resource.h:224
The definition of a simple mutex-style lock.
Definition: SimpleLock.h:62
The fatal resource exception.
Definition: Resource.h:76
virtual ~Resource()
Virtual destructor.
Definition: Resource.h:129
ResourcePtr(Rsrc *rsrc=0x0)
Constructor.
Definition: Resource.h:208
Basic class for managing on-disk resources.
Definition: Resource.h:98
The base definition for exceptions in Menge.
static bool removeResource(Resource *rsrc)
Remove the given resource.
Definition: ResourceManager.cpp:91
A base exception for resources to throw.
Definition: Resource.h:58
int incRef()
Increment references to the managed data.
Definition: Resource.h:147
Rsrc * operator->() const
The indirection operator.
Definition: Resource.h:256
SimpleLock _lock
Simple lock to handle reference counts safely.
Definition: Resource.h:194
const std::string _fileName
The file which contains the resource's data.
Definition: Resource.h:184
int _refCount
The number of data wrappers using this managed data.
Definition: Resource.h:189
const std::string & getName() const
Return the file name for this resource.
Definition: Resource.h:137
Class to handle management of on-disk resources.
Definition: ResourceManager.h:64
Base exception class for menge operations.
Definition: MengeException.h:58
Rsrc * _data
The underlying resource data.
Definition: Resource.h:273
ResourcePtr< Rsrc > & operator=(const ResourcePtr< Rsrc > &ptr)
Assignment operator.
Definition: Resource.h:239
ResourceException(const std::string &s)
Constructor with message.
Definition: Resource.h:70
ResourceException()
Default constructor.
Definition: Resource.h:63
Base class for fatal exceptions.
Definition: MengeException.h:99
ResourceFatalException()
Default constructor.
Definition: Resource.h:81
Base Class providing a pointer interface to Resources.
Definition: VelCompRoadMap.h:63
ResourcePtr(const ResourcePtr< Rsrc > &rPtr)
Copy constructor.
Definition: Resource.h:217
ResourceFatalException(const std::string &s)
Constructor with message.
Definition: Resource.h:88