DevMgr: Add sensorDevSpecs list and make intero/extro lists use unique_ptr

This commit is contained in:
2025-01-08 06:23:34 -04:00
parent 6a494f7ff7
commit f594d29a2d
3 changed files with 26 additions and 15 deletions
+7 -5
View File
@@ -4,14 +4,16 @@
#include <string>
#include <vector>
#include <sstream>
#include <memory>
#include <opts.h>
#include <deviceManager/deviceManager.h>
std::vector<DeviceManager::InteroceptorDeviceSpec>
std::vector<std::unique_ptr<DeviceManager::InteroceptorDeviceSpec>>
DeviceManager::interoceptorDeviceSpecs;
std::vector<DeviceManager::ExtrospectorDeviceSpec>
std::vector<std::unique_ptr<DeviceManager::ExtrospectorDeviceSpec>>
DeviceManager::extrospectorDeviceSpecs;
std::vector<std::reference_wrapper<DeviceManager::SensorDeviceSpec>>
DeviceManager::sensorDeviceSpecs;
std::ostream& operator<<(
std::ostream& os, const DeviceManager::SensorDeviceSpec& spec)
@@ -35,11 +37,11 @@ const std::string DeviceManager::printDeviceSpecs(void)
std::ostringstream oss;
for (const auto& spec : DeviceManager::interoceptorDeviceSpecs) {
oss << "Interoceptor " << spec;
oss << "Interoceptor " << *spec;
}
for (const auto& spec : DeviceManager::extrospectorDeviceSpecs) {
oss << "Extrospector " << spec;
oss << "Extrospector " << *spec;
}
return oss.str();
+12 -8
View File
@@ -5,6 +5,8 @@
#include <cstring>
#include <cstdlib>
#include <stdexcept>
#include <memory>
#include <functional>
#include <deviceManager/deviceManager.h>
#ifndef yylex
@@ -70,23 +72,25 @@ sensor_spec:
interoceptor_spec:
KEYWORD_SPECTYPE_INTEROSPECTOR PIPE spec_body {
DeviceManager::InteroceptorDeviceSpec *spec =
static_cast<DeviceManager::InteroceptorDeviceSpec *>($3);
auto spec = std::make_unique<DeviceManager::InteroceptorDeviceSpec>(
*static_cast<DeviceManager::InteroceptorDeviceSpec *>($3));
spec->sensorType = $1;
DeviceManager::interoceptorDeviceSpecs.push_back(*spec);
delete spec;
DeviceManager::interoceptorDeviceSpecs.push_back(std::move(spec));
DeviceManager::sensorDeviceSpecs.push_back(*spec);
delete $3;
}
;
extrospector_spec:
KEYWORD_SPECTYPE_EXTROSPECTOR PIPE spec_body {
DeviceManager::ExtrospectorDeviceSpec *spec =
static_cast<DeviceManager::ExtrospectorDeviceSpec *>($3);
auto spec = std::make_unique<DeviceManager::ExtrospectorDeviceSpec>(
*static_cast<DeviceManager::ExtrospectorDeviceSpec *>($3));
spec->sensorType = $1;
DeviceManager::extrospectorDeviceSpecs.push_back(*spec);
delete spec;
DeviceManager::extrospectorDeviceSpecs.push_back(std::move(spec));
DeviceManager::sensorDeviceSpecs.push_back(*spec);
delete $3;
}
;