blob: bf56a2fc36661c3a5e8aca783ec55985ebdcedc8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012, 2014 AIT, ACIN, fortiss GmbH
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Filip Andren, Alois Zoitl - initial API and implementation and/or initial documentation
*******************************************************************************/
#include "ModuleList.h"
#include <cstring>
CModuleList::IoModule::IoModule(const char* pa_pchName, unsigned int pa_nPiOffset, unsigned int pa_nBitOffset, unsigned int pa_nModuleNr) :
m_nPiOffset(pa_nPiOffset), m_nBitOffset(pa_nBitOffset), m_nModuleNr(pa_nModuleNr){
m_pchName = new char[strlen(pa_pchName) + 1];
strcpy(m_pchName, pa_pchName);
}
CModuleList::IoModule::~IoModule(){
delete[] m_pchName;
}
CModuleList::CModuleList() :
m_nNumberOfModules(0){
}
CModuleList::~CModuleList(){
// Delete modules in list
m_lModules.clearAll();
}
void CModuleList::addEntry(const char* pa_pchName, unsigned int pa_nPiOffset, unsigned int pa_nBitOffset, unsigned int pa_nModuleNr){
m_lModules.pushBack(new IoModule(pa_pchName, pa_nPiOffset, pa_nBitOffset, pa_nModuleNr));
m_nNumberOfModules++;
}
int CModuleList::getModuleNr(const char* pa_pchName, unsigned int pa_nPiOffset, unsigned int pa_nBitOffset){
TModuleList::Iterator itEnd(m_lModules.end());
for(TModuleList::Iterator it(m_lModules.begin()); it != itEnd; ++it){
if(strcmp(it->m_pchName, pa_pchName) == 0 && it->m_nPiOffset == pa_nPiOffset && it->m_nBitOffset == pa_nBitOffset){
return it->m_nModuleNr;
}
}
return -1;
}
int CModuleList::getModuleNr(const char* pa_pchName, unsigned int pa_nOccurence){
unsigned int nrOcc = 0;
TModuleList::Iterator itEnd(m_lModules.end());
for(TModuleList::Iterator it(m_lModules.begin()); it != itEnd; ++it){
char* pch = strstr(it->m_pchName, pa_pchName);
if(pch != NULL){
nrOcc++;
if(nrOcc == pa_nOccurence){
return it->m_nModuleNr;
}
}
}
return -1;
}
int CModuleList::getNrOfModules(const char* pa_pchName){
int nrMods = 0;
TModuleList::Iterator itEnd(m_lModules.end());
for(TModuleList::Iterator it(m_lModules.begin()); it != itEnd; ++it){
char* pch = strstr(it->m_pchName, pa_pchName);
if(pch != NULL){
nrMods++;
}
}
return nrMods;
}
bool CModuleList::moduleNameExist(const char* pa_pchName){
TModuleList::Iterator itEnd(m_lModules.end());
for(TModuleList::Iterator it(m_lModules.begin()); it != itEnd; ++it){
if(strcmp(it->m_pchName, pa_pchName) == 0){
return true;
}
}
return false;
}