26 #include <boost/shared_ptr.hpp> 27 #include <boost/unordered_map.hpp> 29 #include "MACoreTypes.hpp" 30 #include "MASignal.hpp" 37 #define MA_CALL_CONTAINER_LOCKER_CTOR \ 39 MAContainerLocker(MCGetClassName(this), std::string(__FILE__)) 42 #define MA_CONTAINER_LOCK_ID_VARIABLE(_container) \ 44 int _container##LockID; \ 48 #define MA_GET_CONTAINER_LOCK_ID(_container) \ 49 _container##LockID = RegisterContainer(std::string(#_container)); 52 #define MA_CONTAINER_LOCK_OTHER_FILE(_container) \ 53 for (int LockIi = Lock(_container##LockID, __LINE__, __FILE__); LockIi < 1; \ 54 LockIi += Unlock(_container##LockID, __LINE__, __FILE__)) 55 #define MA_CONTAINER_LOCK(_container) \ 57 for (int LockIi = Lock(_container##LockID, __LINE__); LockIi < 1; \ 58 LockIi += Unlock(_container##LockID, __LINE__)) 108 int Lock(
int container_id,
int line,
const char* file_name =
nullptr);
124 int Unlock(
int container_id,
int line,
const char* file_name =
nullptr);
std::string ClassName
Class name.
MAContainerLocker(const std::string &class_name, const std::string &file_name)
Class constructor.
int Lock(int container_id, int line, const char *file_name=nullptr)
Lock a container.
int Unlock(int container_id, int line, const char *file_name=nullptr)
Unlock a container.
int RegisterContainer(const std::string &container_name)
Register a container for locking.