DevMgr: Implement a wrapper around the yacc parser.

This wrapper reads the -d <devfile> arguments, collates
them into one big string and then feeds them into yacc.
This commit is contained in:
2025-01-07 14:11:51 -04:00
parent 5c3bbdf114
commit 42413d1cc6
3 changed files with 70 additions and 40 deletions
+33 -1
View File
@@ -4,23 +4,55 @@
#include <vector>
#include <string>
#include <opts.h>
#include <utility>
#include <iostream>
class DeviceManager
{
public:
struct SensorDeviceSpec
{
char sensorType;
std::string implexor;
std::string api;
std::vector<std::string> apiParams;
std::string server;
std::vector<std::string> serverParams;
std::string deviceSelector;
friend std::ostream& operator<<(
std::ostream& os, const SensorDeviceSpec& spec);
};
struct InteroceptorDeviceSpec : public SensorDeviceSpec
{
};
struct ExtrospectorDeviceSpec : public SensorDeviceSpec
{
};
static DeviceManager& getInstance()
{
static DeviceManager instance;
return instance;
}
void handleDeviceSpecifiers(const OptionParser& options);
std::string readDeviceFile(const std::string& filename);
void collateAllDeviceSpecs(const OptionParser& options);
void parseAllDeviceSpecs(void);
static const std::string printDeviceSpecs();
private:
DeviceManager() = default;
~DeviceManager() = default;
DeviceManager(const DeviceManager&) = delete;
DeviceManager& operator=(const DeviceManager&) = delete;
public:
std::string allDeviceSpecs;
static std::vector<InteroceptorDeviceSpec> interoceptorDeviceSpecs;
static std::vector<ExtrospectorDeviceSpec> extrospectorDeviceSpecs;
};
#endif // DEVICEMANAGER_H
@@ -1,12 +0,0 @@
#ifndef DEVICESPECPARSER_H
#define DEVICESPECPARSER_H
#include <string>
#include <vector>
#include <utility>
std::vector<std::string> readDeviceFile(const std::string& filename);
std::vector<std::pair<std::string, std::string>> parseDeviceSpecifiers(
const std::vector<std::string>& deviceStrings);
#endif // DEVICESPECPARSER_H