int SensorsList::addSensor(const Sensor& sensor) { Sensor *newSensor = sensor.clone(); if( ! newSensor->isValid() ) { std::cerr << "[ERR] SensorsTree::addSensor error : sensor " << sensor.getName() << " isValid() method returns false" << std::endl; delete newSensor; return -1; } if( !(newSensor->getSensorType() >= 0 && newSensor->getSensorType() < NR_OF_SENSOR_TYPES) ) { std::cerr << "[ERR] SensorsTree::addSensor error : sensor " << sensor.getName() << " has an unknown sensor type " << newSensor->getSensorType() << std::endl; delete newSensor; return -1; } this->pimpl->VecSensors[newSensor->getSensorType()].push_back(newSensor); int new_index = this->pimpl->VecSensors[newSensor->getSensorType()].size()-1; this->pimpl->NamesSensors[newSensor->getSensorType()].insert(std::pair<std::string,int>(newSensor->getName(),new_index)); return new_index; }