00001 #include "lsparammem.h" 00002 #include <cassert> 00003 00004 using namespace realea; 00005 using namespace realea::internal; 00006 00007 LSParametersMemory::LSParametersMemory(unsigned tam) : m_params(tam) { 00008 } 00009 00010 LSParametersMemory::~LSParametersMemory(void) { 00011 reset(); 00012 } 00013 00014 void LSParametersMemory::store(unsigned id, ILSParameters *params) { 00015 ILSParameters *previous; 00016 00017 if (id > m_params.size()) { 00018 throw ConfigException("LSParametersMemory::Size"); 00019 } 00020 00021 previous = m_params[id]; 00022 00023 if (params != previous) { 00024 00025 if (previous != NULL) { 00026 delete previous; 00027 } 00028 00029 m_params[id] = params; 00030 } 00031 } 00032 00033 ILSParameters *LSParametersMemory::recover(unsigned id) { 00034 LSMemory::iterator pos; 00035 00036 if (id > m_params.size()) { 00037 throw ConfigException("ILSParameters::recover"); 00038 } 00039 00040 return m_params[id]; 00041 } 00042 00043 void LSParametersMemory::remove(unsigned id) { 00044 if (m_params[id] != NULL) { 00045 delete m_params[id]; 00046 m_params[id] = NULL; 00047 } 00048 } 00049 00050 void LSParametersMemory::reset(void) { 00051 LSMemory::iterator elem; 00052 00053 for (elem = m_params.begin(); elem != m_params.end(); ++elem) { 00054 if (*elem != NULL) { 00055 delete (*elem); 00056 *elem = NULL; 00057 } 00058 } 00059 00060 } 00061 00062 00063 void LSParametersMemory::notifyChange(unsigned id) { 00064 ILSParameters *param; 00065 assert(id <= m_params.size()); 00066 00067 param = m_params[id]; 00068 00069 if (param != NULL) { 00070 delete param; 00071 m_params[id] = NULL; 00072 } 00073 00074 } 00075 00076 void LSParametersMemory::changeId(unsigned oldir, unsigned newid) { 00077 if (oldir != newid) { 00078 swap(m_params[oldir], m_params[newid]); 00079 } 00080 }