From 89be503edb1adfcafecbee614657d2d91f45caf6 Mon Sep 17 00:00:00 2001 From: pgdalmeida Date: Mon, 22 Jun 2026 11:23:01 +0200 Subject: [PATCH] Initial commit --- .claude/settings.json | 8 + .gitignore | 31 + Camera.cpp | 449 +++ Camera.h | 108 + JPEG_XL.h | 110 + Log.h | 1 + MQTT.cpp | 155 + MQTT.h | 157 + Makefile | 35 + Parser.h | 102 + README.md | 74 + Serial.h | 144 + bin/x64/Release/startup_gimbal.sh | 1 + bin/x64/Release/startup_gimbal_with_init.sh | 1 + bin/x64/Release/test_smoke.jxl | Bin 0 -> 246673 bytes config/config.example.ini | 31 + cxxopts.hpp | 2908 +++++++++++++++++++ docs/architecture.md | 131 + docs/build-and-setup.md | 118 + docs/configuration.md | 115 + docs/known-issues.md | 116 + docs/modules-reference.md | 118 + docs/mqtt-api.md | 88 + ini.c | 310 ++ ini.h | 178 ++ main.cpp | 346 +++ timing.h | 116 + 27 files changed, 5951 insertions(+) create mode 100644 .claude/settings.json create mode 100644 .gitignore create mode 100644 Camera.cpp create mode 100644 Camera.h create mode 100644 JPEG_XL.h create mode 100644 Log.h create mode 100644 MQTT.cpp create mode 100644 MQTT.h create mode 100644 Makefile create mode 100644 Parser.h create mode 100644 README.md create mode 100644 Serial.h create mode 100644 bin/x64/Release/startup_gimbal.sh create mode 100644 bin/x64/Release/startup_gimbal_with_init.sh create mode 100644 bin/x64/Release/test_smoke.jxl create mode 100644 config/config.example.ini create mode 100644 cxxopts.hpp create mode 100644 docs/architecture.md create mode 100644 docs/build-and-setup.md create mode 100644 docs/configuration.md create mode 100644 docs/known-issues.md create mode 100644 docs/modules-reference.md create mode 100644 docs/mqtt-api.md create mode 100644 ini.c create mode 100644 ini.h create mode 100644 main.cpp create mode 100644 timing.h diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 0000000..2fb7d86 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,8 @@ +{ + "permissions": { + "allow": [ + "Bash(git add *)", + "Bash(grep -iE \"config\\\\.ini|\\\\.out|\\\\.o$|compile_commands\")" + ] + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9b1f263 --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +# ---- Build output ---- +/build/ +/obj/ +*.o +*.out +bin/**/*.out + +# CMake +CMakeCache.txt +CMakeFiles/ +cmake_install.cmake +/_deps/ + +# Editor / tooling +compile_commands.json +.cache/ +.vscode/ +*.swp + +# ---- Captured images ---- +*.jxl +bin/x64/Release/RGB/ +bin/x64/Release/ACR/ +bin/x64/Release/NIR/ +# but keep the demo-mode placeholder image (force-tracked) +!bin/x64/Release/test_smoke.jxl + +# ---- Secrets / machine-specific config ---- +# Real configs hold plaintext MQTT credentials. Commit config/config.example.ini instead. +config.ini +bin/x64/Release/config.ini diff --git a/Camera.cpp b/Camera.cpp new file mode 100644 index 0000000..aecc6cb --- /dev/null +++ b/Camera.cpp @@ -0,0 +1,449 @@ +#include "Camera.h" +#include "JPEG_XL.h" +#include "timing.h" +#include +#include +#include +#include + + +class FrameObserver : public IFrameObserver +{ +public: + typedef std::function Callback; + Callback call; + int cam_id = 0; + std::atomic settle = { 3 }; + + void registerCallback(Callback f) { + call = f; + } + + FrameObserver(CameraPtr camera) : IFrameObserver(camera) {}; + + void FrameReceived(const FramePtr pFrame) + { + int old_val = settle.fetch_sub(1); + std::cout << "[FrameObserver cam=" << cam_id << "] FrameReceived settle=" << old_val << " → new=" << old_val - 1 << std::endl; + + if (old_val > 0) { + std::cout << "[FrameObserver cam=" << cam_id << "] DUMP (settling)" << std::endl; + m_pCamera->QueueFrame(pFrame); + return; + } + + bool bQueueDirectly = true; + VmbFrameStatusType eReceiveStatus; + + if (VmbErrorSuccess == pFrame->GetReceiveStatus(eReceiveStatus)) + { + /* ignore any incompletely frame */ + if (VmbFrameStatusComplete != eReceiveStatus) + { + VmbUint64_t id; + std::string name; + std::string serial; + pFrame->GetFrameID(id); + m_pCamera->GetModel(name); + m_pCamera->GetSerialNumber(serial); + std::cout << "!!!incomplete frame, rcvd error: " << eReceiveStatus << " id: " << id << " camera: " << name << " + " << serial << std::endl; + m_pCamera->QueueFrame(pFrame); + return; + } + VmbUint64_t id; + pFrame->GetFrameID(id); + std::cout << "[FrameObserver cam=" << cam_id << "] rcvd frame ID=" << id << " → ENQUEUE" << std::endl; + // Lock the frame queue + m_FramesMutex.lock(); + // Add frame to queue + m_Frames.push(pFrame); + // Unlock frame queue + m_FramesMutex.unlock(); + // Emit the frame received signal + call(cam_id); + // callback! + bQueueDirectly = false; + } + else { + std::cout << "[FrameObserver cam=" << cam_id << "] frame rcvd error" << std::endl; + } + + // If any error occurred we queue the frame without notification + if (true == bQueueDirectly) + { + m_pCamera->QueueFrame(pFrame); + } + }; + + FramePtr GetFrame() { + FramePtr res; + // Lock the frame queue + m_FramesMutex.lock(); + // Pop frame from queue + if (!m_Frames.empty()) + { + res = m_Frames.front(); + m_Frames.pop(); + } + // Unlock frame queue + m_FramesMutex.unlock(); + return res; + } + + void QueueF(FramePtr& frame) { + m_pCamera->QueueFrame(frame); + } + + void ClearFrameQueue() { + // Lock the frame queue + m_FramesMutex.lock(); + std::queue empty; + std::swap(m_Frames, empty); + m_FramesMutex.unlock(); + } +private: + std::queue m_Frames; + std::mutex m_FramesMutex; +}; + +VimbaHandler::VimbaHandler(std::vector cameraIds, MQTTClient* mqtt_c, motor_info* motor_i, bool demo) : + m_vmbSystem(VmbSystem::GetInstance()), mqtt_client(mqtt_c), gimbal_data(motor_i), demo_flag(demo) +{ + VmbErrorType err = m_vmbSystem.Startup(); + + if (err != VmbErrorSuccess) + { + throw std::runtime_error("Could not start API, err=" + std::to_string(err)); + } + + //CameraPtrVector cameras; + //err = m_vmbSystem.GetCameras(cameras); + //if (err != VmbErrorSuccess) + //{ + // m_vmbSystem.Shutdown(); + // throw std::runtime_error("Could not get cameras, err=" + std::to_string(err)); + //} + //if (cameras.empty()) + //{ + // m_vmbSystem.Shutdown(); + // throw std::runtime_error("No cameras found."); + //} + + if (cameraIds.size() > 0) + { + int id = 0; + + for (std::string cameraId : cameraIds) + { + CameraPtr cam; + err = m_vmbSystem.GetCameraByID(cameraId.c_str(), cam); + if (err != VmbErrorSuccess) + { + m_vmbSystem.Shutdown(); + throw std::runtime_error("No camera found with ID=" + std::string(cameraId) + ", err = " + std::to_string(err)); + } + else { + m_cameras.push_back(cam); + } + } + } + + //else + //{ + // m_camera = cameras[0]; + //} + for (CameraPtr camptr : m_cameras) + { + err = camptr->Open(VmbAccessModeFull); + if (err != VmbErrorSuccess) + { + m_vmbSystem.Shutdown(); + throw std::runtime_error("Could not open camera, err=" + std::to_string(err)); + } + else { + std::string name; + if (camptr->GetName(name) == VmbErrorSuccess) + { + std::cout << "Opened Camera " << name << std::endl; + } + } + } + +} + + + +VimbaHandler::~VimbaHandler() +{ + try + { + Stop(); + } + catch (std::runtime_error& e) + { + std::cout << e.what() << std::endl; + } + + m_vmbSystem.Shutdown(); +} + +void VimbaHandler::Open() +{ +} + +void VimbaHandler::Close() +{ +} + +void VimbaHandler::Start() +{ + save_thread_running = true; + std::cout << "starting Camera thread" << std::endl; + image_saver_thread = std::thread(&VimbaHandler::SaveImage, this); + int cam_id = 0; + for (CameraPtr cam : m_cameras) { + IFrameObserverPtr FO_ptr; + ImageQueue8 image_queue; + m_ImageQueue_vec.push_back(image_queue); + SP_SET(FO_ptr, new FrameObserver(cam)); + SP_DYN_CAST(FO_ptr)->cam_id = cam_id; + cam_id++; + VmbErrorType err = cam->StartContinuousImageAcquisition(5, FO_ptr); + FO_ptr_vec.push_back(FO_ptr); + if (err != VmbErrorSuccess) + { + throw std::runtime_error("Could not start acquisition, err=" + std::to_string(err)); + } + else { + + SP_DYN_CAST(FO_ptr)->registerCallback(std::bind(&VimbaHandler::EnqueueToStoreStruct, this, std::placeholders::_1)); + } + } + cam_started = true; +} + +void VimbaHandler::Stop() +{ + for (CameraPtr cam : m_cameras) { + VmbErrorType err = cam->StopContinuousImageAcquisition(); + if (err != VmbErrorSuccess) + { + throw std::runtime_error("Could not stop acquisition, err=" + std::to_string(err)); + } + } + cam_started = false; + save_thread_running = false; + if (image_saver_thread.joinable()) { + image_saver_thread.join(); + } +} + +void VimbaHandler::evaluateCommand(std::string cmd, double val) +{ + if (cmd == "fps" && val > 0) + ChangeFramerate(val); + else if (cmd == "jxlq" && val > 0) + jxlq = val; + else if (cmd == "jxle" && val > 0) + jxle = val; + else if (cmd == "display" && val >= 0) + display_image = int(val); +} + +void VimbaHandler::EnqueueToStoreStruct(int cam_id) +{ + FramePtr frame = SP_DYN_CAST(FO_ptr_vec[cam_id])->GetFrame(); + + VmbUint32_t Width; + VmbUint32_t Height; + VmbUint32_t BufferSize; + VmbPixelFormatType PixelFormat; + const VmbUchar_t* pBuffer(NULL); + + if (VmbErrorSuccess == frame->GetPixelFormat(PixelFormat) + && VmbErrorSuccess == frame->GetWidth(Width) + && VmbErrorSuccess == frame->GetHeight(Height) + && VmbErrorSuccess == frame->GetBufferSize(BufferSize) + && VmbErrorSuccess == frame->GetBuffer(pBuffer)) + { + NanoUnixTimer time; + long long tstamp = time.Stamp_longlong(); + std::lock_guard lg(queue_mut); + ImageStore8Ptr pFrame; + // in case we reached the maximum number of queued frames + // take of the oldest and reuse it to store the newly arriving frame + + std::vector data_in = std::vector(pBuffer, pBuffer + BufferSize); + if (m_ImageQueue_vec[cam_id].size() >= 100) + { + pFrame = m_ImageQueue_vec[cam_id].front(); + m_ImageQueue_vec[cam_id].pop(); + if (!pFrame->equal(Width, Height, PixelFormat)) + { + pFrame.reset(); + } + } + if (pFrame == NULL) + { + pFrame = ImageStore8Ptr(new image_store_8bit(data_in.data(), data_in.size(), Width, Height, PixelFormat, tstamp, cam_id)); + } + else + { + pFrame->setData(data_in.data(), data_in.size(), tstamp); + } + m_ImageQueue_vec[cam_id].push(pFrame); + + SP_DYN_CAST(FO_ptr_vec[cam_id])->QueueF(frame); + std::cout << "Enqueue finished Camera:" << cam_id << " -- Queue size: " << m_ImageQueue_vec[cam_id].size() << std::endl; + if (cam_id == 0) + cv_proc.notify_one(); + } +} + +void VimbaHandler::SaveImage() +{ + while (save_thread_running) { + std::unique_lock lock(proc_wait_mut); + cv_proc.wait(lock); + ImageStore8Ptr pFrame; + for (ImageQueue8& imageQueue : m_ImageQueue_vec) { + while (imageQueue.size() > 0 && save_jxl) + { + Timer time; + queue_mut.lock(); + pFrame = imageQueue.front(); + imageQueue.pop(); + queue_count_rgb = imageQueue.size(); + queue_mut.unlock(); + + + int imagetype; + int imagechannels; + if (pFrame->dataSize() / (pFrame->height() * pFrame->width()) == 1) { + imagetype = CV_8UC1; + imagechannels = 1; + } + else if (pFrame->dataSize() / (pFrame->height() * pFrame->width()) == 3) { + imagetype = CV_8UC3; + imagechannels = 3; + } + + cv::Mat img_to_rotate = cv::Mat(pFrame->height(), pFrame->width(), imagetype, pFrame->data()); + cv::Mat img; + cv::rotate(img_to_rotate, img, cv::ROTATE_90_COUNTERCLOCKWISE); + if (display_image) { + cv::namedWindow("Display Image", cv::WINDOW_NORMAL); + cv::resizeWindow("Display Image", img.cols / 4, img.rows / 4); + cv::imshow("Display Image", img); + cv::waitKey(10); + } + std::string homedir = getenv("HOME"); + std::string cameraname; + if (pFrame->getCamId() == 0) + cameraname = "RGB"; + if (pFrame->getCamId() == 1) + cameraname = "ACR"; + if (pFrame->getCamId() == 2) + cameraname = "NIR"; + std::string filename = homedir + "/projects/Fire_Gimbal_Control/bin/x64/Release/" + cameraname + "/" + std::to_string(pFrame->getTimestamp()) + ".jxl"; + std::filesystem::path path(filename); + // Extract the directory part of the path + std::filesystem::path dir = path.parent_path(); + // Create directories if they don't exist + if (!dir.empty() && !std::filesystem::exists(dir)) { + std::filesystem::create_directories(dir); + std::cout << "Created directories: " << dir << std::endl; + } + if (!demo_flag) { + JPEGXL jxl_writer(img.cols, img.rows, img.data, imagechannels, (float)jxlq, (int)jxle); + jxl_writer.WriteFile(filename.c_str()); + std::cout << "Camera: " + std::to_string(pFrame->getCamId()) + " -- Compress TIME:" << std::to_string(time.ElapsedMillis()) << " -- SaveQueue size:" << imageQueue.size() << std::endl; + } + else { + std::filesystem::copy("test_smoke.jxl", filename); + } + time.Reset(); + //cv::imwrite(filename, img, compression_params); + std::string net_path = "/mnt/ggs-smb/FirewatchTowers/FWT_Podrosche/"; + std::string backup_net_path = "/home/ggs/fwt_image_backup/"; + + + + //try { + // std::filesystem::copy_file(filename, net_path + filename); + // std::cout << "RGB Upload TIME:" << std::to_string(time.ElapsedMillis()) << std::endl; + //} + //catch (std::filesystem::filesystem_error& e) + //{ + // std::cout << "Could not copy image to zkms: " << e.what() << '\n'; + // std::cout << "Copy Backup to LattePanda Sigma" << '\n'; + // try { + // std::filesystem::copy_file(filename, backup_net_path + filename); + // } + // catch (std::filesystem::filesystem_error& e) + // { + // std::cout << "Could not copy image to LattePanda Sigma: " << e.what() << '\n'; + // } + //} + //std::filesystem::remove(filename); + std::string payload = "{ \"fwt\":\"" + fwt_name + "\" ,\"cam\":\"" + cameraname + "\", \"hdg\":" + std::to_string((int)(gimbal_data->hdg * 10)) + ", \"time\":" + std::to_string(pFrame->getTimestamp()) + " }"; + mqtt_client->publish(mqtt_RGB, payload); + } + } + } +} + +bool VimbaHandler::ChangeFramerate(double fr) +{ + VmbErrorType result; + for (CameraPtr cam : m_cameras) { + FeaturePtr pFeature; + result = SP_ACCESS(cam)->GetFeatureByName("AcquisitionFrameRate", pFeature); + if (result == VmbErrorSuccess) + result = pFeature->SetValue(fr); + if (result == VmbErrorSuccess) { + std::cout << "camera fps changed: " << fr << std::endl; + } + } + if (result == VmbErrorSuccess) { + return true; + } + else { + std::cout << "camera fps change failed with error:" << result << std::endl; + return false; + } +} + +void VimbaHandler::TriggerSettle() +{ + for (auto& fo : FO_ptr_vec) { + SP_DYN_CAST(fo)->settle.store(3); + } +} + +bool VimbaHandler::TriggerCamera() +{ + TriggerSettle(); + std::cout << "[TriggerCamera] settle reset to 3, firing 4 triggers (3 settle + 1 real)..." << std::endl; + + FeaturePtr pFeature; + VmbErrorType result; + + for (int i = 0; i < 4; i++) { + result = SP_ACCESS(m_cameras[0])->GetFeatureByName("TriggerSoftware", pFeature); + if (result == VmbErrorSuccess) + result = pFeature->RunCommand(); + int sl = SP_DYN_CAST(FO_ptr_vec[0])->settle.load(); + std::cout << "[TriggerCamera] trigger #" << (i+1) << " settle_before=" << sl << " result=" << result << std::endl; + std::this_thread::sleep_for(std::chrono::milliseconds(400)); + } + + std::cout << "[TriggerCamera] done, 4th frame should be real image" << std::endl; + return (result == VmbErrorSuccess); +} + +void VimbaHandler::SetTowerName(std::string name) +{ + fwt_name = name; + mqtt_RGB = "GGS/FWT/" + fwt_name + "/CamEvent"; +} diff --git a/Camera.h b/Camera.h new file mode 100644 index 0000000..72a389e --- /dev/null +++ b/Camera.h @@ -0,0 +1,108 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include "MQTT.h" +#include "Serial.h" +using namespace VmbCPP; + +struct image_store_8bit +{ +private: + typedef std::vector data_vec; + data_vec m_Data; + VmbUint32_t m_Width; // frame width + VmbUint32_t m_Height; // frame height + VmbPixelFormat_t m_PixelFormat; // frame pixel format + long long m_timestamp; + int m_cam_id; +public: + image_store_8bit(const VmbUchar_t* pBuffer, VmbUint32_t BufferByteSize, VmbUint32_t Width, VmbUint32_t Height, VmbPixelFormatType PixelFormat, long long stamp, int cam_id) + : m_Data(pBuffer, pBuffer + BufferByteSize) + , m_Width(Width) + , m_Height(Height) + , m_PixelFormat(PixelFormat) + , m_timestamp(stamp) + , m_cam_id(cam_id) + { + } + + long long getTimestamp() { + return(m_timestamp); + } + + bool equal(VmbUint32_t Width, VmbUint32_t Height, VmbPixelFormat_t PixelFormat) const + { + return m_Width == Width + && m_Height == Height + && m_PixelFormat == PixelFormat; + } + + bool setData(const VmbUchar_t* Buffer, VmbUint32_t BufferSize, long long stamp) + { + if (BufferSize == dataSize()) + { + std::copy(Buffer, Buffer + BufferSize, m_Data.begin()); + m_timestamp = stamp; + return true; + } + return false; + } + VmbPixelFormat_t pixelFormat() const { return m_PixelFormat; } + VmbUint32_t width() const { return m_Width; } + VmbUint32_t height() const { return m_Height; } + VmbUint32_t dataSize() const { return static_cast(m_Data.size()); } + const VmbUchar_t* data() const { return &*m_Data.begin(); } + VmbUchar_t* data() { return &*m_Data.begin(); } + int getCamId() { return m_cam_id; } +}; + +class VimbaHandler +{ +public: + VimbaHandler(std::vector cameraIds, MQTTClient* mqtt_c, motor_info* motor_i, bool demo); + ~VimbaHandler(); + void Open(); + void Close(); + void Start(); + void Stop(); + void evaluateCommand(std::string cmd, double val); + void EnqueueToStoreStruct(int cam_id); + void SaveImage(); + bool ChangeFramerate(double fr); + bool TriggerCamera(); + void TriggerSettle(); + void SetTowerName(std::string name); + + bool cam_started = false; + int queue_count_rgb = 0; +private: + bool demo_flag = false; + double jxlq = 2.0; + double jxle = 3.0; + std::string fwt_name = "Rietschen";//"Dev"; //TODO: put in config + std::string mqtt_RGB = "GGS/FWT/" + fwt_name + "/CamEvent"; + motor_info* gimbal_data; + MQTTClient* mqtt_client; + typedef std::shared_ptr ImageStore8Ptr; + typedef std::queue ImageQueue8; + std::vector m_ImageQueue_vec; + std::mutex queue_mut; + std::mutex proc_wait_mut; + std::condition_variable cv_proc; + bool save_thread_running = false; + bool save_jxl = true; + bool display_image = false; + std::thread image_saver_thread; + + std::vector FO_ptr_vec; + VmbSystem& m_vmbSystem; + CameraPtrVector m_cameras; + +}; + diff --git a/JPEG_XL.h b/JPEG_XL.h new file mode 100644 index 0000000..c47df81 --- /dev/null +++ b/JPEG_XL.h @@ -0,0 +1,110 @@ +#pragma once +#include +#include // for fopen, fclose +#include +#include +#include +#include +#include +#include +#include +#include +class JPEGXL +{ +public: + JPEGXL(int width, int height, const unsigned char* img, int num_channels, float q, int e, int th = 3) :m_width(width), m_height(height), m_num_channels(num_channels), m_quality(q), m_efford(e) + { + auto enc = JxlEncoderMake(/*memory_manager=*/nullptr); + + auto runner = JxlThreadParallelRunnerMake(nullptr, th); + if (JXL_ENC_SUCCESS != JxlEncoderSetParallelRunner(enc.get(), + JxlThreadParallelRunner, + runner.get())) { + fprintf(stderr, "JxlEncoderSetParallelRunner failed\n"); + } + + JxlPixelFormat pixel_format = { m_num_channels, JXL_TYPE_UINT8, JXL_NATIVE_ENDIAN, 0 }; + JxlBasicInfo basic_info; + JxlEncoderInitBasicInfo(&basic_info); + basic_info.xsize = m_width; + basic_info.ysize = m_height; + basic_info.alpha_bits = 0; + basic_info.bits_per_sample = 8; + basic_info.num_color_channels = m_num_channels; + basic_info.uses_original_profile = false; + + if (JXL_ENC_SUCCESS != JxlEncoderSetBasicInfo(enc.get(), &basic_info)) { + fprintf(stderr, "JxlEncoderSetBasicInfo failed\n"); + return; + } + JxlColorEncoding color_encoding = {}; + JxlColorEncodingSetToSRGB(&color_encoding,/*is_gray=*/pixel_format.num_channels < 3); + if (JXL_ENC_SUCCESS != JxlEncoderSetColorEncoding(enc.get(), &color_encoding)) { + fprintf(stderr, "JxlEncoderSetColorEncoding failed\n"); + return; + } + JxlEncoderFrameSettings* frame_settings = JxlEncoderFrameSettingsCreate(enc.get(), nullptr); + JxlEncoderFrameSettingsSetOption(frame_settings, JXL_ENC_FRAME_SETTING_EFFORT, e); + JxlEncoderFrameSettingsSetOption(frame_settings, JXL_ENC_FRAME_SETTING_DECODING_SPEED, 0); + + if (q == 0) {//if lossless + JxlEncoderSetFrameDistance(frame_settings, 0); + JxlEncoderSetFrameLossless(frame_settings, true); + } + else { + JxlEncoderSetFrameLossless(frame_settings, false); + JxlEncoderSetFrameDistance(frame_settings, q); + } + if (JXL_ENC_SUCCESS != JxlEncoderAddImageFrame(frame_settings, &pixel_format, (void*)img, sizeof(uint8_t) * m_width * m_height * m_num_channels)) { + fprintf(stderr, "JxlEncoderAddImageFrame failed\n"); + return; + } + JxlEncoderCloseInput(enc.get()); + std::vector* compressed = &compressed_data; + compressed->resize(64); + uint8_t* next_out = compressed->data(); + size_t avail_out = compressed->size() - (next_out - compressed->data()); + JxlEncoderStatus process_result = JXL_ENC_NEED_MORE_OUTPUT; + while (process_result == JXL_ENC_NEED_MORE_OUTPUT) { + process_result = JxlEncoderProcessOutput(enc.get(), &next_out, &avail_out); + if (process_result == JXL_ENC_NEED_MORE_OUTPUT) { + size_t offset = next_out - compressed->data(); + compressed->resize(compressed->size() * 2); + next_out = compressed->data() + offset; + avail_out = compressed->size() - offset; + } + } + compressed->resize(next_out - compressed->data()); + if (JXL_ENC_SUCCESS != process_result) { + fprintf(stderr, "JxlEncoderProcessOutput failed\n"); + return; + } + } + ~JPEGXL() {} + + bool WriteFile(const char* filename) { + FILE* file = fopen(filename, "wb"); + if (!file) { + fprintf(stderr, "Could not open %s for writing\n", filename); + return false; + } + if (fwrite(compressed_data.data(), sizeof(uint8_t), compressed_data.size(), file) != + compressed_data.size()) { + fprintf(stderr, "Could not write bytes to %s\n", filename); + fclose(file); + return false; + } + if (fclose(file) != 0) { + fprintf(stderr, "Could not close %s\n", filename); + return false; + } + return true; + } +private: + int m_width; + int m_height; + int m_num_channels; + float m_quality; + int m_efford; + std::vector compressed_data; +}; diff --git a/Log.h b/Log.h new file mode 100644 index 0000000..50e9667 --- /dev/null +++ b/Log.h @@ -0,0 +1 @@ +#pragma once diff --git a/MQTT.cpp b/MQTT.cpp new file mode 100644 index 0000000..6fe55d2 --- /dev/null +++ b/MQTT.cpp @@ -0,0 +1,155 @@ +#include "MQTT.h" + +const int QOS = 1; +const int N_RETRY_ATTEMPTS = 5; + + +void MQTTCallback::on_failure(const mqtt::token& tok) +{ + std::cout << "Connection failed" << std::endl; + if (++nretry_ > N_RETRY_ATTEMPTS) + std::cout << "Connection attempt failed already a few times" << std::endl; + reconnect(); +} + + +// (Re)connection success +void MQTTCallback::connected(const std::string& cause) { + std::cout << "\nConnection success" << std::endl; + std::cout << "\nSubscribing to topics.." << std::endl; + + cli_.subscribe(tpoic_target_hdg, QOS, nullptr, subListener_); + cli_.subscribe(topic_control_mode, QOS, nullptr, subListener_); +} + +void MQTTCallback::message_arrived(mqtt::const_message_ptr msg) { + std::cout << "Message arrived" << std::endl; + std::cout << "\ttopic: '" << msg->get_topic() << "'" << std::endl; + std::cout << "\tpayload: '" << msg->to_string() << "'\n" << std::endl; + if (msg->get_topic() == "GGS/FWT/" + fwt_name + "/target_HDG") { + try { + int value = static_cast(std::stoi(msg->to_string())); + std::unique_lock ul(mqtt_mut); + sub_data.set_target_heading(msg->to_string()); + } + catch (const std::invalid_argument& e) { + std::cerr << "MQTT type convertion invalid argument: " << e.what() << std::endl; + } + catch (const std::out_of_range& e) { + std::cerr << "MQTT type convertion out of range: " << e.what() << std::endl; + } + } + else if (msg->get_topic() == "GGS/FWT/" + fwt_name + "/ControlCode") { + try { + std::unique_lock ul(mqtt_mut); + sub_data.set_control_code(static_cast(std::stoi(msg->to_string()))); + } + catch (const std::invalid_argument& e) { + std::cerr << "MQTT type convertion invalid argument: " << e.what() << std::endl; + } + catch (const std::out_of_range& e) { + std::cerr << "MQTT type convertion out of range: " << e.what() << std::endl; + } + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////7x + +MQTTClient::MQTTClient(const std::string& serverURI, const std::string& clientId, std::string tower_name, std::string login_user, std::string login_pw) + : client(serverURI, clientId), callback(client, connOpts, tower_name) +{ + connOpts.set_keep_alive_interval(20); + connOpts.set_clean_session(true); + connOpts.set_user_name(login_user); + connOpts.set_password(login_pw); + std::cout << "MQTT object created" << std::endl; + client.set_callback(callback); + std::cout << "MQTT callback set" << std::endl; +} + +MQTTClient::~MQTTClient() { + if (client.is_connected()) + disconnect(); +} + +void MQTTClient::connect_client() { + std::cout << "connecting MQTT..." << std::endl; + running = true; + mqtt_thread = std::thread(&MQTTClient::run, this); + +} + +void MQTTClient::run() { + const auto TIMEOUT = std::chrono::seconds(5); + try { + conToken = client.connect(connOpts, nullptr, callback); + conToken->wait_for(TIMEOUT); + connected = true; + } + catch (const mqtt::exception& exc) { + std::cerr << "Error: " << exc.what() << std::endl; + running = false; + connected = false; + return; + } + std::cout << "MQTT connected" << std::endl; + + while (running) + ; +} + +void MQTTClient::disconnect() { + // Disconnect + try { + std::cout << "\nDisconnecting from the MQTT server..." << std::flush; + client.disconnect()->wait(); + std::cout << "OK" << std::endl; + } + catch (const mqtt::exception& exc) { + std::cerr << exc.what() << std::endl; + } + running = false; + mqtt_thread.join(); +} + +void MQTTClient::publish(const std::string& topic, const std::string& payload) { + const auto TIMEOUT = std::chrono::seconds(3); + mqtt::delivery_token_ptr pubtok; + mqtt::message_ptr msg = mqtt::make_message(topic, payload); + msg->set_qos(1); + msg->set_retained(true); + try { + pubtok = client.publish(msg); + pubtok->wait_for(TIMEOUT); + } + catch (const mqtt::exception& exc) { + std::cerr << "Error: " << exc.what() << std::endl; + } +} + +void MQTTClient::subscribe(const std::string& topic) { + try { + subToken = client.subscribe(topic, 1); + subToken->wait(); + } + catch (const mqtt::exception& exc) { + std::cerr << "Error: " << exc.what() << std::endl; + } +} + +void MQTTClient::receiveMessages() { + try { + client.start_consuming(); + } + catch (const mqtt::exception& exc) { + std::cerr << "Error: " << exc.what() << std::endl; + } + while (true) { + + } +} + +bool MQTTClient::is_connected_to_server() +{ + return client.is_connected(); +} diff --git a/MQTT.h b/MQTT.h new file mode 100644 index 0000000..e286b52 --- /dev/null +++ b/MQTT.h @@ -0,0 +1,157 @@ +#pragma once + +#include +#include +#include +#include +struct mqtt_sub_data +{ + bool ctl_avail = false; + bool hdg_avail = false; + std::string target_heading=""; + int control_code = 0; + void set_control_code(int c) { + ctl_avail = true; + control_code = c; + } + void set_target_heading(std::string target) { + hdg_avail = true; + target_heading = target; + } +}; + +// Callbacks for the success or failures of requested actions. +// This could be used to initiate further action, but here we just log the +// results to the console. +class action_listener : public virtual mqtt::iaction_listener +{ + std::string name_; + + void on_failure(const mqtt::token& tok) override { + std::cout << name_ << " failure"; + if (tok.get_message_id() != 0) + std::cout << " for token: [" << tok.get_message_id() << "]" << std::endl; + std::cout << std::endl; + } + + void on_success(const mqtt::token& tok) override { + std::cout << name_ << " success"; + if (tok.get_message_id() != 0) + std::cout << " for token: [" << tok.get_message_id() << "]" << std::endl; + auto top = tok.get_topics(); + if (top && !top->empty()) + std::cout << "\ttoken topic: '" << (*top)[0] << "', ..." << std::endl; + std::cout << std::endl; + } + +public: + action_listener(const std::string& name) : name_(name) {} +}; + +///////////////////////////////////////////////////////////////////////////// + +/** + * Local callback & listener class for use with the client connection. + * This is primarily intended to receive messages, but it will also monitor + * the connection to the broker. If the connection is lost, it will attempt + * to restore the connection and re-subscribe to the topic. + */ +class MQTTCallback : public virtual mqtt::callback, + public virtual mqtt::iaction_listener + +{ + const std::string tpoic_target_hdg; + const std::string topic_control_mode; + mqtt_sub_data sub_data; + std::mutex mqtt_mut; + std::string fwt_name; + // Counter for the number of connection retries + int nretry_; + // The MQTT client + mqtt::async_client& cli_; + // Options to use if we need to reconnect + mqtt::connect_options& connOpts_; + // An action listener to display the result of actions. + action_listener subListener_; + + // This deomonstrates manually reconnecting to the broker by calling + // connect() again. This is a possibility for an application that keeps + // a copy of it's original connect_options, or if the app wants to + // reconnect with different options. + // Another way this can be done manually, if using the same options, is + // to just call the async_client::reconnect() method. + void reconnect() { + std::this_thread::sleep_for(std::chrono::milliseconds(2500)); + try { + cli_.connect(connOpts_, nullptr, *this); + } + catch (const mqtt::exception& exc) { + std::cerr << "Error: " << exc.what() << std::endl; + } + } + + + // Re-connection failure + void on_failure(const mqtt::token& tok) override; + + // (Re)connection success + // Either this or connected() can be used for callbacks. + void on_success(const mqtt::token& tok) override {} + // Re-connection success + void connected(const std::string& cause) override; + + // Callback for when the connection is lost. + // This will initiate the attempt to manually reconnect. + void connection_lost(const std::string& cause) override { + std::cout << "\nConnection lost" << std::endl; + if (!cause.empty()) + std::cout << "\tcause: " << cause << std::endl; + + std::cout << "Reconnecting..." << std::endl; + nretry_ = 0; + reconnect(); + } + + // Callback for when a message arrives. + void message_arrived(mqtt::const_message_ptr msg) override; + + void delivery_complete(mqtt::delivery_token_ptr token) override { + std::cout << "MQTT delivery complete" << std::endl; + } + +public: + MQTTCallback(mqtt::async_client& cli, mqtt::connect_options& connOpts, std::string tower_name) + : nretry_(0), cli_(cli), connOpts_(connOpts), subListener_("Subscription"), fwt_name(tower_name), tpoic_target_hdg("GGS/FWT/" + tower_name + "/target_HDG"), topic_control_mode("GGS/FWT/" + tower_name + "/ControlCode") {} + mqtt_sub_data get_sub_data() { + std::unique_lock ul(mqtt_mut); + mqtt_sub_data tmp = sub_data; + sub_data.hdg_avail = false; + sub_data.ctl_avail = false; + return tmp; + } +}; + +class MQTTClient { +public: + MQTTClient(const std::string& serverURI, const std::string& clientId, std::string tower_name, std::string login_user, std::string login_pw); + ~MQTTClient(); + + void connect_client(); + void run(); + void disconnect(); + void publish(const std::string& topic, const std::string& payload); + void subscribe(const std::string& topic); + void receiveMessages(); + bool is_connected_to_server(); + + bool running = false; + bool connected = false; + MQTTCallback callback; +private: + std::string fwt_name; + mqtt::async_client client; + mqtt::token_ptr subToken; + mqtt::token_ptr conToken; + mqtt::connect_options connOpts; + std::thread mqtt_thread; +}; diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c85dcc7 --- /dev/null +++ b/Makefile @@ -0,0 +1,35 @@ +CXX := g++ +CC := gcc +CXXFLAGS := -std=c++17 -g -Wall -I. +CFLAGS := -g -Wall -I. +LDFLAGS := -lpaho-mqttpp3 -lpaho-mqtt3a \ + -lopencv_core -lopencv_highgui \ + -ljxl -ljxl_threads \ + -lboost_program_options \ + -lVmbC -lVmbCPP + +TARGET := bin/Fire_Gimbal_Control.out +OBJDIR := obj + +CXX_SRCS := main.cpp MQTT.cpp Camera.cpp +C_SRCS := ini.c + +CXX_OBJS := $(CXX_SRCS:%.cpp=$(OBJDIR)/%.o) +C_OBJS := $(C_SRCS:%.c=$(OBJDIR)/%.o) +OBJS := $(CXX_OBJS) $(C_OBJS) + +.PHONY: all clean + +all: $(TARGET) + +$(TARGET): $(OBJS) + $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) + +$(OBJDIR)/%.o: %.cpp + $(CXX) $(CXXFLAGS) -c -o $@ $< + +$(OBJDIR)/%.o: %.c + $(CC) $(CFLAGS) -c -o $@ $< + +clean: + rm -f $(OBJS) $(TARGET) diff --git a/Parser.h b/Parser.h new file mode 100644 index 0000000..6413d46 --- /dev/null +++ b/Parser.h @@ -0,0 +1,102 @@ +#pragma once +#include +#include +#include +#include + +namespace qi = boost::spirit::qi; + +enum InputCommands +{ + no_cmd, + startcamera, + stopcamera, + setcamera, + setimagerate, + setgimbal, + setmotorcontrol, + setdebug +}; + +struct parser_data { + std::string command=""; + std::string device = ""; + std::string option = ""; + double command_val=0.0; +}; + +struct Parser +{ + parser_data p_data; + std::mutex mut; + void set_parser_data(parser_data& data) { + std::cout << "parser set data..." << std::endl; + std::lock_guard lg(mut); + p_data = data; + } + + void clear_parser_data() { + //std::cout << "parser clear data..." << std::endl; + std::lock_guard lg(mut); + p_data.command = ""; + } + + parser_data get_parser_data() { + //std::cout << "parser get data..." << std::endl; + std::lock_guard lg(mut); + parser_data temp= p_data; + //clear_parser_data(); + return temp; + } + + void parse_input(std::string input) { + parser_data temp_data; + qi::parse( + input.begin(), input.end(), + (*qi::char_("a-zA-Z") >> ' ' >> *qi::char_("a-zA-Z") >> ' ' >> *qi::char_("a-zA-Z") >> ' ' >> qi::double_), + temp_data.command, temp_data.device, temp_data.option, temp_data.command_val + ); + std::cout << temp_data.command << " ... " << temp_data.device << " ... " << temp_data.option << " ... " << temp_data.command_val << std::endl; + set_parser_data(temp_data); + std::cout << "parser data set" << temp_data.command_val << std::endl; + } +}; + +struct CMD_eval { + InputCommands eval(Parser& parse) { + if (parse.p_data.command == "start") { + std::cout << "starting Camera" << std::endl; + parse.clear_parser_data(); + return startcamera; + } + else if (parse.p_data.command == "stop") { + std::cout << "stopping Camera" << std::endl; + parse.clear_parser_data(); + return stopcamera; + } + else if (parse.p_data.command == "debug") { + parse.clear_parser_data(); + return setdebug; + } + else if (parse.p_data.command == "set") { + //std::cout << "setting" << std::endl; + if (parse.p_data.device == "camera") { + parse.clear_parser_data(); + return setcamera; + } + else if (parse.p_data.device == "fps") { + parse.clear_parser_data(); + return setimagerate; + } + else if (parse.p_data.device == "motorctl") { + parse.clear_parser_data(); + return setmotorcontrol; + + } + + } + else { + return no_cmd; + } + } +}; diff --git a/README.md b/README.md new file mode 100644 index 0000000..6b9e19b --- /dev/null +++ b/README.md @@ -0,0 +1,74 @@ +# Fire Gimbal Control (Staeffelsberg) + +Real-time control software for an automated **fire-watch gimbal**. A single C++17 binary runs on a +tower-mounted PC, rotates a pan gimbal carrying up to four industrial cameras, captures a 360° panorama +for wildfire detection, compresses each frame to JPEG XL, and reports to a ground station over MQTT. + +This is the deployment for the **Staeffelsberg** fire-watch tower (FWT). The same codebase is used across +towers; the tower identity comes from `config.ini`. + +State is held in memory (mutex-guarded structs), configuration is read once from an INI file, images are +written to the filesystem as `.jxl`, and telemetry flows over MQTT. See [docs/architecture.md](docs/architecture.md) +for the full picture. + +## What it does (at a glance) + +``` + motor controller (MCU) this program (Fire_Gimbal_Control.out) ground station + ┌───────────────────┐ serial ┌──────────────────────────────────────┐ MQTT ┌──────────────┐ + │ gimbal + sensors │ ─────────▶ │ read telemetry → decide when to stop │ ──────▶ │ broker / ZKMS │ + │ /dev/ttyACM0 │ ◀───────── │ send move/stop commands │ ◀────── │ control UI │ + └───────────────────┘ │ trigger cameras → encode JXL → save │ └──────────────┘ + └──────────────┬───────────────────────┘ + Vimba X (GigE/USB) │ files + cameras ───────────────────▶ ▼ RGB/ACR/NIR/.jxl +``` + +## Quick start + +```bash +# 1. Install dependencies (see docs/build-and-setup.md for details + Vimba X SDK) +# 2. Build +make # produces bin/Fire_Gimbal_Control.out +# 3. Run (requires camera(s), motor MCU on /dev/ttyACM0, and a reachable MQTT broker) +./bin/Fire_Gimbal_Control.out --start 1 # auto-start capture +./bin/Fire_Gimbal_Control.out --init 1 --start 1 # also find endstops first +``` + +> **Before it will run on this machine**, several paths are hardcoded to `/home/ggs/projects/Fire_Gimbal_Control/...` +> and the program exits if MQTT can't connect. Read **[docs/known-issues.md](docs/known-issues.md)** first — it +> lists every reproduction blocker and the deployed layout the binary expects. + +## Documentation + +| Document | Contents | +|----------|----------| +| [docs/architecture.md](docs/architecture.md) | System overview, threading model, end-to-end data flow, capture state machine | +| [docs/build-and-setup.md](docs/build-and-setup.md) | Toolchain, dependencies, build, serial/MQTT setup, directory layout | +| [docs/configuration.md](docs/configuration.md) | `config.ini` keys, CLI flags, console command grammar | +| [docs/mqtt-api.md](docs/mqtt-api.md) | MQTT topic catalog, payloads, QoS/retain, ControlCode semantics | +| [docs/modules-reference.md](docs/modules-reference.md) | Per-file reference and key data structures | +| [docs/known-issues.md](docs/known-issues.md) | Reproduction blockers and recommended follow-ups | + +## Repository layout + +``` +. +├── main.cpp Entry point: config, CLI args, threads, main control loop +├── Serial.h SerialPort + motor_info telemetry parser (Boost.Asio) +├── MQTT.h / MQTT.cpp MQTTClient + callbacks (Eclipse Paho C++) +├── Camera.h / Camera.cpp VimbaHandler: acquisition, queue, JXL save (Vimba X + OpenCV) +├── JPEG_XL.h JPEG XL encoder wrapper (libjxl) +├── Parser.h Console command parser (Boost.Spirit Qi) + command evaluator +├── timing.h Timer / timestamp helpers +├── ini.c / ini.h inih INI parser (third-party) +├── cxxopts.hpp Third-party CLI parser (legacy/unused — Boost is used instead) +├── Log.h Empty stub +├── config.ini Configuration (also a separate copy under bin/x64/Release/) +├── Makefile Build definition +└── bin/x64/Release/ Deployed/runtime directory (binary, config, startup scripts, image folders) +``` + +## License / ownership + +Internal tooling for the GGS fire-watch tower network. No license file is present in the repository. diff --git a/Serial.h b/Serial.h new file mode 100644 index 0000000..48e6281 --- /dev/null +++ b/Serial.h @@ -0,0 +1,144 @@ +#include +#include +#include +#include +#include +struct motor_info +{ + int Xenc; + int Xerr; + int sgt_val; + int sgt_stat; + int is_moving; + int control_status; + float hdg; + int deviation_warn; + int temp; + int humid; + int fan_pwm; +}; +class SerialPort { +public: + SerialPort(const std::string& port, unsigned int baud_rate) + : io_service_(), serial_(io_service_) { + boost::system::error_code ec; + + serial_.open(port, ec); + if (ec) { + throw std::runtime_error("Failed to open port: " + ec.message()); + } + + setOption(boost::asio::serial_port_base::baud_rate(baud_rate), "baud_rate"); + setOption(boost::asio::serial_port_base::character_size(8), "character_size"); + setOption(boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::none), "parity"); + setOption(boost::asio::serial_port_base::stop_bits(boost::asio::serial_port_base::stop_bits::one), "stop_bits"); + setOption(boost::asio::serial_port_base::flow_control(boost::asio::serial_port_base::flow_control::none), "flow_control"); + } + + void startReading() { + read(); + } + + void sendCommand(std::string cmd) { + write(cmd); + } + + void write(const std::string& data) { + boost::asio::async_write(serial_, boost::asio::buffer(data), + [](const boost::system::error_code& error, std::size_t) { + if (error) { + std::cerr << "Write failed: " << error.message() << std::endl; + } + } + ); + } + + void run() { + io_service_.run(); + } + + void stop() { + io_service_.stop(); + } + + void set_controller_info(motor_info& inf) { + std::lock_guard lg(mut); + motorcontroller_information = inf; + } + + motor_info get_controller_info() { + std::lock_guard lg(mut); + return motorcontroller_information; + } + + bool parser(std::string& message) + { + + if (message[0] == '$') { + //std::cout << message; + std::vector values; + std::string delimiter = ";"; + size_t pos = 0; + while ((pos = message.find(delimiter)) != std::string::npos) { + values.push_back(message.substr(0, pos)); + message.erase(0, pos + delimiter.length()); + } + //for (int i = 0; i < values.size(); i++) { + // std::cout << values[i] << std::endl; + //} + if (values.size() == 12) { + motor_info tmp_info; + tmp_info.Xenc = stoi(values[1]); + tmp_info.Xerr = stoi(values[2]); + tmp_info.sgt_val = stoi(values[3]); + tmp_info.sgt_stat = stoi(values[4]); + tmp_info.is_moving = stoi(values[5]); + tmp_info.control_status = stoi(values[6]); + tmp_info.hdg = stof(values[7]); + tmp_info.deviation_warn = stoi(values[8]); + tmp_info.humid = stoi(values[9]); + tmp_info.temp = stoi(values[10]); + tmp_info.fan_pwm = stoi(values[11]); + set_controller_info(tmp_info); + return true; + } + return false; + //else + //std::cout << values.size() << std::endl; + } + } + +private: + std::mutex mut; + motor_info motorcontroller_information; + + template + void setOption(const Option& option, const std::string& option_name) { + boost::system::error_code ec; + serial_.set_option(option, ec); + if (ec) { + throw std::runtime_error("Failed to set " + option_name + ": " + ec.message()); + } + } + void read() { + boost::asio::async_read_until(serial_, buffer_, '\n', + [this](const boost::system::error_code& error, std::size_t bytes_transferred) { + if (!error) { + std::istream is(&buffer_); + std::string line; + std::getline(is, line); + //std::cout << "Received: " << line << std::endl; + parser(line); + read(); // Continue reading + } + else { + std::cerr << "Read failed: " << error.message() << std::endl; + } + } + ); + } + + boost::asio::io_service io_service_; + boost::asio::serial_port serial_; + boost::asio::streambuf buffer_; +}; \ No newline at end of file diff --git a/bin/x64/Release/startup_gimbal.sh b/bin/x64/Release/startup_gimbal.sh new file mode 100644 index 0000000..a3c16a7 --- /dev/null +++ b/bin/x64/Release/startup_gimbal.sh @@ -0,0 +1 @@ +~/projects/Fire_Gimbal_Control/bin/x64/Release/Fire_Gimbal_Control.out -s 1 diff --git a/bin/x64/Release/startup_gimbal_with_init.sh b/bin/x64/Release/startup_gimbal_with_init.sh new file mode 100644 index 0000000..78d1b03 --- /dev/null +++ b/bin/x64/Release/startup_gimbal_with_init.sh @@ -0,0 +1 @@ +~/projects/Fire_Gimbal_Control/bin/x64/Release/Fire_Gimbal_Control.out -i 1 -s 1 diff --git a/bin/x64/Release/test_smoke.jxl b/bin/x64/Release/test_smoke.jxl new file mode 100644 index 0000000000000000000000000000000000000000..3d3604d4b0172cd2f3c0b680b2c3bbf99930bb47 GIT binary patch literal 246673 zcmV(_K-9ng3VML(cMSj&2m$~I=b;hMH}3!x;Bx@LQgt)CpRshJc6%dFY03*am5^ z25PW{NMMF{zzC7h2#cVImB_rkZkUOvSc}v64C2rY ztw0RDXbN`N3dr!B008iajr0%?{xFThkcRUJ59;v&F#$OMK>{HFm=FK34xKpx;Q=WD zi3ITg*#Y4Jp#fZu>l~B(5Q{R zporMuj__cfED$V`+J}v33A$R$-<+w?33$W#3xR|LPk;bEW6f=X zOE&sk9GXjYYA%39h7=SO6ciK`6ciK`6ciK`6ciK`6ciNcU^4Om!?x>|qNF==at28N z0K1h)9yu{i999khqgJV7-rU5vD~bZx2>=Y4P0oGp?6PX%A+QQ|3IJO@4L^5wHpYdT ze5>NHQvld(a&B{He`8#^WlfvFzK0H}ywCmp-QDF?X=0sVkaIu#`(D-&#@)>R?(QyT zXSdu9MvNO{jJq-J#u$uUG5cV9W_LHP1gsO#%>Vru<4X1s=;h4*Zrr$yJM3c^LcE;W z-`^b|YhxvZA>4}0``O>!g`TkQ0N_@z{E-AZK6O`H+ZMg$D-eD#BpKV!!zO}SFL_dhvNPz&!%$pper zR@MwBw8LaZQNvuya$==k(zXShlp8YHj}(a(MHcH(uU@iB`q$$DoIS794fw@54=3>p znHEh*u_f|teOSG5PC(m<^Uq&c6fJdXV}z!6Rg%2QqXlC#`WidP@8RlTUi%qs)lzE2 z5qL&7%&7+0K!l%9{ENil5ELrsl6sAR(!s|nvL{%G0lFiWY=%Iq23QV=q{*X4tfSU2 z?>oigUxV#Xo2`6!;_D0O?mkSPLF~26j(~PyQbACwI9AJ|KmK3yvpX+8Hh=OI1HIgd zr}VYgVah6My3TJRI7o|}kbQez2U-ny9e^p+3R#G;Uv4DP5`ra7_D{?cn*E+Zjgkl+ zXA~-1pXC^G`k2rKeoUJj+)ATyXLw43EKi_6`Id8{TN^QrA1pNo_eVOt8Cd22c&ws- zb~kV6l#oCX6*|Q~T6!YOB9*XQFz#xloGf}YNb~+>klPpUZO%Ju_@~30$=|ZX#t@;t zGt}Jw{DN`})BR%Icft-8Fwpix(i`KByAP75t%Ti76b?luuWBgdp;5i^b+h#TL?g&! z4fM~QZ;n3v4;MZCJ}y6z!DJF&qs#)TM?Vy7T7cKb#9|{FyWNFDu&zFthE&YX(=qsd zyB^b6lv(td!f3RFQ`*m4fe?%9mC1-zmhnmg8*%J0h?_tE=3-z!FmwC3_oqWD!FLX9 zYJ#EUlAoQ85^3PDq_q;-3@tJoKX?}x`HOZw>T&y=lHGVksm@UU>N^tC3;&XIkg4j@ z!&PoRK{9<9iM*qU!wl%QiYaY3oWrgAQ8HPibwTg82xieDIyultRJG9>v!rWT!Bp_A z&!fqiT6DkXT^B&94Ubk29_%g^lv~7{<<3Sa*%!7z#%n>2I2bQncmJ%sI&I;GR#uD% zr;#jJD~i5MKv)V@92!dxD>N|2(DvWoI6gKS?tD1Gc`kFY35|ME!G}m5)9jQdOBfTz z?UZHgYHR85DoG}e2!ssbs^hf~rpaoS%9~W0dc<-#(4z5ezSM(Q? z^^i8tBu0SI;d4B9MhPj^cDeM=b$N`An7V2qz~5cfo~)x^XFuh$g}L%t87?3*kU#tC zaPGq??;2@W7=p@*^NWR-3F(O!#mw?aCE_v=z+^7Sc>?GXs)Adi1)^^N8%R#4)W0<{ z^Sk8OEMV(VqzEM%sX|xD{jJoV9PpmAcG9YgN<|0iHS}F^^~rATRRR~;-uVs+(a_b_ z-j@wQfRXD~WYC+1G-q`RE##?zQJ=L7#?%R*-^aC0e7Ol?zU;SN{p7xM%pcV=St3uW z5Qt}}&-Vsvrs!-;p#ffFiHg>$GT-)zoyH0gl?fw%0DdUg9C-aB*8}9E#bCphV&Y~L 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
wJm2bbjC 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef CXXOPTS_NO_EXCEPTIONS +#include +#endif + +#if defined(__GNUC__) && !defined(__clang__) +# if (__GNUC__ * 10 + __GNUC_MINOR__) < 49 +# define CXXOPTS_NO_REGEX true +# endif +#endif +#if defined(_MSC_VER) && !defined(__clang__) +#define CXXOPTS_LINKONCE_CONST __declspec(selectany) extern +#define CXXOPTS_LINKONCE __declspec(selectany) extern +#else +#define CXXOPTS_LINKONCE_CONST +#define CXXOPTS_LINKONCE +#endif + +#ifndef CXXOPTS_NO_REGEX +# include +#endif // CXXOPTS_NO_REGEX + +// Nonstandard before C++17, which is coincidentally what we also need for +#ifdef __has_include +# if __has_include() +# include +# ifdef __cpp_lib_optional +# define CXXOPTS_HAS_OPTIONAL +# endif +# endif +#endif + +#define CXXOPTS_FALLTHROUGH +#ifdef __has_cpp_attribute +#if __has_cpp_attribute(fallthrough) +#undef CXXOPTS_FALLTHROUGH +#define CXXOPTS_FALLTHROUGH [[fallthrough]] +#endif +#endif + +#if __cplusplus >= 201603L +#define CXXOPTS_NODISCARD [[nodiscard]] +#else +#define CXXOPTS_NODISCARD +#endif + +#ifndef CXXOPTS_VECTOR_DELIMITER +#define CXXOPTS_VECTOR_DELIMITER ',' +#endif + +#define CXXOPTS__VERSION_MAJOR 3 +#define CXXOPTS__VERSION_MINOR 2 +#define CXXOPTS__VERSION_PATCH 1 + +#if (__GNUC__ < 10 || (__GNUC__ == 10 && __GNUC_MINOR__ < 1)) && __GNUC__ >= 6 +#define CXXOPTS_NULL_DEREF_IGNORE +#endif + +#if defined(__GNUC__) +#define DO_PRAGMA(x) _Pragma(#x) +#define CXXOPTS_DIAGNOSTIC_PUSH DO_PRAGMA(GCC diagnostic push) +#define CXXOPTS_DIAGNOSTIC_POP DO_PRAGMA(GCC diagnostic pop) +#define CXXOPTS_IGNORE_WARNING(x) DO_PRAGMA(GCC diagnostic ignored x) +#else +// define other compilers here if needed +#define CXXOPTS_DIAGNOSTIC_PUSH +#define CXXOPTS_DIAGNOSTIC_POP +#define CXXOPTS_IGNORE_WARNING(x) +#endif + +#ifdef CXXOPTS_NO_RTTI +#define CXXOPTS_RTTI_CAST static_cast +#else +#define CXXOPTS_RTTI_CAST dynamic_cast +#endif + +namespace cxxopts { + static constexpr struct { + uint8_t major, minor, patch; + } version = { + CXXOPTS__VERSION_MAJOR, + CXXOPTS__VERSION_MINOR, + CXXOPTS__VERSION_PATCH + }; +} // namespace cxxopts + +//when we ask cxxopts to use Unicode, help strings are processed using ICU, +//which results in the correct lengths being computed for strings when they +//are formatted for the help output +//it is necessary to make sure that can be found by the +//compiler, and that icu-uc is linked in to the binary. + +#ifdef CXXOPTS_USE_UNICODE +#include + +namespace cxxopts { + + using String = icu::UnicodeString; + + inline + String + toLocalString(std::string s) + { + return icu::UnicodeString::fromUTF8(std::move(s)); + } + + // GNU GCC with -Weffc++ will issue a warning regarding the upcoming class, we want to silence it: + // warning: base class 'class std::enable_shared_from_this' has accessible non-virtual destructor + CXXOPTS_DIAGNOSTIC_PUSH + CXXOPTS_IGNORE_WARNING("-Wnon-virtual-dtor") + // This will be ignored under other compilers like LLVM clang. + class UnicodeStringIterator + { + public: + + using iterator_category = std::forward_iterator_tag; + using value_type = int32_t; + using difference_type = std::ptrdiff_t; + using pointer = value_type*; + using reference = value_type&; + + UnicodeStringIterator(const icu::UnicodeString* string, int32_t pos) + : s(string) + , i(pos) + { + } + + value_type + operator*() const + { + return s->char32At(i); + } + + bool + operator==(const UnicodeStringIterator& rhs) const + { + return s == rhs.s && i == rhs.i; + } + + bool + operator!=(const UnicodeStringIterator& rhs) const + { + return !(*this == rhs); + } + + UnicodeStringIterator& + operator++() + { + ++i; + return *this; + } + + UnicodeStringIterator + operator+(int32_t v) + { + return UnicodeStringIterator(s, i + v); + } + + private: + const icu::UnicodeString* s; + int32_t i; + }; + CXXOPTS_DIAGNOSTIC_POP + + inline + String& + stringAppend(String& s, String a) + { + return s.append(std::move(a)); + } + + inline + String& + stringAppend(String& s, std::size_t n, UChar32 c) + { + for (std::size_t i = 0; i != n; ++i) + { + s.append(c); + } + + return s; + } + + template + String& + stringAppend(String& s, Iterator begin, Iterator end) + { + while (begin != end) + { + s.append(*begin); + ++begin; + } + + return s; + } + + inline + size_t + stringLength(const String& s) + { + return static_cast(s.length()); + } + + inline + std::string + toUTF8String(const String& s) + { + std::string result; + s.toUTF8String(result); + + return result; + } + + inline + bool + empty(const String& s) + { + return s.isEmpty(); + } + +} // namespace cxxopts + +namespace std { + + inline + cxxopts::UnicodeStringIterator + begin(const icu::UnicodeString& s) + { + return cxxopts::UnicodeStringIterator(&s, 0); + } + + inline + cxxopts::UnicodeStringIterator + end(const icu::UnicodeString& s) + { + return cxxopts::UnicodeStringIterator(&s, s.length()); + } + +} // namespace std + +//ifdef CXXOPTS_USE_UNICODE +#else + +namespace cxxopts { + + using String = std::string; + + template + T + toLocalString(T&& t) + { + return std::forward(t); + } + + inline + std::size_t + stringLength(const String& s) + { + return s.length(); + } + + inline + String& + stringAppend(String& s, const String& a) + { + return s.append(a); + } + + inline + String& + stringAppend(String& s, std::size_t n, char c) + { + return s.append(n, c); + } + + template + String& + stringAppend(String& s, Iterator begin, Iterator end) + { + return s.append(begin, end); + } + + template + std::string + toUTF8String(T&& t) + { + return std::forward(t); + } + + inline + bool + empty(const std::string& s) + { + return s.empty(); + } + +} // namespace cxxopts + +//ifdef CXXOPTS_USE_UNICODE +#endif + +namespace cxxopts { + + namespace { + CXXOPTS_LINKONCE_CONST std::string LQUOTE("\'"); + CXXOPTS_LINKONCE_CONST std::string RQUOTE("\'"); + } // namespace + + // GNU GCC with -Weffc++ will issue a warning regarding the upcoming class, we + // want to silence it: warning: base class 'class + // std::enable_shared_from_this' has accessible non-virtual + // destructor This will be ignored under other compilers like LLVM clang. + CXXOPTS_DIAGNOSTIC_PUSH + CXXOPTS_IGNORE_WARNING("-Wnon-virtual-dtor") + + // some older versions of GCC warn under this warning + CXXOPTS_IGNORE_WARNING("-Weffc++") + class Value : public std::enable_shared_from_this + { + public: + + virtual ~Value() = default; + + virtual + std::shared_ptr + clone() const = 0; + + virtual void + add(const std::string& text) const = 0; + + virtual void + parse(const std::string& text) const = 0; + + virtual void + parse() const = 0; + + virtual bool + has_default() const = 0; + + virtual bool + is_container() const = 0; + + virtual bool + has_implicit() const = 0; + + virtual std::string + get_default_value() const = 0; + + virtual std::string + get_implicit_value() const = 0; + + virtual std::shared_ptr + default_value(const std::string& value) = 0; + + virtual std::shared_ptr + implicit_value(const std::string& value) = 0; + + virtual std::shared_ptr + no_implicit_value() = 0; + + virtual bool + is_boolean() const = 0; + }; + + CXXOPTS_DIAGNOSTIC_POP + + namespace exceptions { + + class exception : public std::exception + { + public: + explicit exception(std::string message) + : m_message(std::move(message)) + { + } + + CXXOPTS_NODISCARD + const char* + what() const noexcept override + { + return m_message.c_str(); + } + + private: + std::string m_message; + }; + + class specification : public exception + { + public: + + explicit specification(const std::string& message) + : exception(message) + { + } + }; + + class parsing : public exception + { + public: + explicit parsing(const std::string& message) + : exception(message) + { + } + }; + + class option_already_exists : public specification + { + public: + explicit option_already_exists(const std::string& option) + : specification("Option " + LQUOTE + option + RQUOTE + " already exists") + { + } + }; + + class invalid_option_format : public specification + { + public: + explicit invalid_option_format(const std::string& format) + : specification("Invalid option format " + LQUOTE + format + RQUOTE) + { + } + }; + + class invalid_option_syntax : public parsing { + public: + explicit invalid_option_syntax(const std::string& text) + : parsing("Argument " + LQUOTE + text + RQUOTE + + " starts with a - but has incorrect syntax") + { + } + }; + + class no_such_option : public parsing + { + public: + explicit no_such_option(const std::string& option) + : parsing("Option " + LQUOTE + option + RQUOTE + " does not exist") + { + } + }; + + class missing_argument : public parsing + { + public: + explicit missing_argument(const std::string& option) + : parsing( + "Option " + LQUOTE + option + RQUOTE + " is missing an argument" + ) + { + } + }; + + class option_requires_argument : public parsing + { + public: + explicit option_requires_argument(const std::string& option) + : parsing( + "Option " + LQUOTE + option + RQUOTE + " requires an argument" + ) + { + } + }; + + class gratuitous_argument_for_option : public parsing + { + public: + gratuitous_argument_for_option + ( + const std::string& option, + const std::string& arg + ) + : parsing( + "Option " + LQUOTE + option + RQUOTE + + " does not take an argument, but argument " + + LQUOTE + arg + RQUOTE + " given" + ) + { + } + }; + + class requested_option_not_present : public parsing + { + public: + explicit requested_option_not_present(const std::string& option) + : parsing("Option " + LQUOTE + option + RQUOTE + " not present") + { + } + }; + + class option_has_no_value : public exception + { + public: + explicit option_has_no_value(const std::string& option) + : exception( + !option.empty() ? + ("Option " + LQUOTE + option + RQUOTE + " has no value") : + "Option has no value") + { + } + }; + + class incorrect_argument_type : public parsing + { + public: + explicit incorrect_argument_type + ( + const std::string& arg + ) + : parsing( + "Argument " + LQUOTE + arg + RQUOTE + " failed to parse" + ) + { + } + }; + + } // namespace exceptions + + + template + void throw_or_mimic(const std::string& text) + { + static_assert(std::is_base_of::value, + "throw_or_mimic only works on std::exception and " + "deriving classes"); + +#ifndef CXXOPTS_NO_EXCEPTIONS + // If CXXOPTS_NO_EXCEPTIONS is not defined, just throw + throw T{ text }; +#else + // Otherwise manually instantiate the exception, print what() to stderr, + // and exit + T exception{ text }; + std::cerr << exception.what() << std::endl; + std::exit(EXIT_FAILURE); +#endif + } + + using OptionNames = std::vector; + + namespace values { + + namespace parser_tool { + + struct IntegerDesc + { + std::string negative = ""; + std::string base = ""; + std::string value = ""; + }; + struct ArguDesc { + std::string arg_name = ""; + bool grouping = false; + bool set_value = false; + std::string value = ""; + }; + +#ifdef CXXOPTS_NO_REGEX + inline IntegerDesc SplitInteger(const std::string& text) + { + if (text.empty()) + { + throw_or_mimic(text); + } + IntegerDesc desc; + const char* pdata = text.c_str(); + if (*pdata == '-') + { + pdata += 1; + desc.negative = "-"; + } + if (strncmp(pdata, "0x", 2) == 0) + { + pdata += 2; + desc.base = "0x"; + } + if (*pdata != '\0') + { + desc.value = std::string(pdata); + } + else + { + throw_or_mimic(text); + } + return desc; + } + + inline bool IsTrueText(const std::string& text) + { + const char* pdata = text.c_str(); + if (*pdata == 't' || *pdata == 'T') + { + pdata += 1; + if (strncmp(pdata, "rue\0", 4) == 0) + { + return true; + } + } + else if (strncmp(pdata, "1\0", 2) == 0) + { + return true; + } + return false; + } + + inline bool IsFalseText(const std::string& text) + { + const char* pdata = text.c_str(); + if (*pdata == 'f' || *pdata == 'F') + { + pdata += 1; + if (strncmp(pdata, "alse\0", 5) == 0) + { + return true; + } + } + else if (strncmp(pdata, "0\0", 2) == 0) + { + return true; + } + return false; + } + + inline OptionNames split_option_names(const std::string& text) + { + OptionNames split_names; + + std::string::size_type token_start_pos = 0; + auto length = text.length(); + + if (length == 0) + { + throw_or_mimic(text); + } + + while (token_start_pos < length) { + const auto& npos = std::string::npos; + auto next_non_space_pos = text.find_first_not_of(' ', token_start_pos); + if (next_non_space_pos == npos) { + throw_or_mimic(text); + } + token_start_pos = next_non_space_pos; + auto next_delimiter_pos = text.find(',', token_start_pos); + if (next_delimiter_pos == token_start_pos) { + throw_or_mimic(text); + } + if (next_delimiter_pos == npos) { + next_delimiter_pos = length; + } + auto token_length = next_delimiter_pos - token_start_pos; + // validate the token itself matches the regex /([:alnum:][-_[:alnum:]]*/ + { + const char* option_name_valid_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789" + "_-.?"; + + if (!std::isalnum(text[token_start_pos], std::locale::classic()) || + text.find_first_not_of(option_name_valid_chars, token_start_pos) < next_delimiter_pos) { + throw_or_mimic(text); + } + } + split_names.emplace_back(text.substr(token_start_pos, token_length)); + token_start_pos = next_delimiter_pos + 1; + } + return split_names; + } + + inline ArguDesc ParseArgument(const char* arg, bool& matched) + { + ArguDesc argu_desc; + const char* pdata = arg; + matched = false; + if (strncmp(pdata, "--", 2) == 0) + { + pdata += 2; + if (isalnum(*pdata, std::locale::classic())) + { + argu_desc.arg_name.push_back(*pdata); + pdata += 1; + while (isalnum(*pdata, std::locale::classic()) || *pdata == '-' || *pdata == '_') + { + argu_desc.arg_name.push_back(*pdata); + pdata += 1; + } + if (argu_desc.arg_name.length() > 1) + { + if (*pdata == '=') + { + argu_desc.set_value = true; + pdata += 1; + if (*pdata != '\0') + { + argu_desc.value = std::string(pdata); + } + matched = true; + } + else if (*pdata == '\0') + { + matched = true; + } + } + } + } + else if (strncmp(pdata, "-", 1) == 0) + { + pdata += 1; + argu_desc.grouping = true; + while (isalnum(*pdata, std::locale::classic())) + { + argu_desc.arg_name.push_back(*pdata); + pdata += 1; + } + matched = !argu_desc.arg_name.empty() && *pdata == '\0'; + } + return argu_desc; + } + +#else // CXXOPTS_NO_REGEX + + namespace { + CXXOPTS_LINKONCE + const char* const integer_pattern = + "(-)?(0x)?([0-9a-zA-Z]+)|((0x)?0)"; + CXXOPTS_LINKONCE + const char* const truthy_pattern = + "(t|T)(rue)?|1"; + CXXOPTS_LINKONCE + const char* const falsy_pattern = + "(f|F)(alse)?|0"; + CXXOPTS_LINKONCE + const char* const option_pattern = + "--([[:alnum:]][-_[:alnum:]\\.]+)(=(.*))?|-([[:alnum:]].*)"; + CXXOPTS_LINKONCE + const char* const option_specifier_pattern = + "([[:alnum:]][-_[:alnum:]\\.]*)(,[ ]*[[:alnum:]][-_[:alnum:]]*)*"; + CXXOPTS_LINKONCE + const char* const option_specifier_separator_pattern = ", *"; + + } // namespace + + inline IntegerDesc SplitInteger(const std::string& text) + { + static const std::basic_regex integer_matcher(integer_pattern); + + std::smatch match; + std::regex_match(text, match, integer_matcher); + + if (match.length() == 0) + { + throw_or_mimic(text); + } + + IntegerDesc desc; + desc.negative = match[1]; + desc.base = match[2]; + desc.value = match[3]; + + if (match.length(4) > 0) + { + desc.base = match[5]; + desc.value = "0"; + return desc; + } + + return desc; + } + + inline bool IsTrueText(const std::string& text) + { + static const std::basic_regex truthy_matcher(truthy_pattern); + std::smatch result; + std::regex_match(text, result, truthy_matcher); + return !result.empty(); + } + + inline bool IsFalseText(const std::string& text) + { + static const std::basic_regex falsy_matcher(falsy_pattern); + std::smatch result; + std::regex_match(text, result, falsy_matcher); + return !result.empty(); + } + + // Gets the option names specified via a single, comma-separated string, + // and returns the separate, space-discarded, non-empty names + // (without considering which or how many are single-character) + inline OptionNames split_option_names(const std::string& text) + { + static const std::basic_regex option_specifier_matcher(option_specifier_pattern); + if (!std::regex_match(text.c_str(), option_specifier_matcher)) + { + throw_or_mimic(text); + } + + OptionNames split_names; + + static const std::basic_regex option_specifier_separator_matcher(option_specifier_separator_pattern); + constexpr int use_non_matches{ -1 }; + auto token_iterator = std::sregex_token_iterator( + text.begin(), text.end(), option_specifier_separator_matcher, use_non_matches); + std::copy(token_iterator, std::sregex_token_iterator(), std::back_inserter(split_names)); + return split_names; + } + + inline ArguDesc ParseArgument(const char* arg, bool& matched) + { + static const std::basic_regex option_matcher(option_pattern); + std::match_results result; + std::regex_match(arg, result, option_matcher); + matched = !result.empty(); + + ArguDesc argu_desc; + if (matched) { + argu_desc.arg_name = result[1].str(); + argu_desc.set_value = result[2].length() > 0; + argu_desc.value = result[3].str(); + if (result[4].length() > 0) + { + argu_desc.grouping = true; + argu_desc.arg_name = result[4].str(); + } + } + + return argu_desc; + } + +#endif // CXXOPTS_NO_REGEX +#undef CXXOPTS_NO_REGEX + } // namespace parser_tool + + namespace detail { + + template + struct SignedCheck; + + template + struct SignedCheck + { + template + void + operator()(bool negative, U u, const std::string& text) + { + if (negative) + { + if (u > static_cast((std::numeric_limits::min)())) + { + throw_or_mimic(text); + } + } + else + { + if (u > static_cast((std::numeric_limits::max)())) + { + throw_or_mimic(text); + } + } + } + }; + + template + struct SignedCheck + { + template + void + operator()(bool, U, const std::string&) const {} + }; + + template + void + check_signed_range(bool negative, U value, const std::string& text) + { + SignedCheck::is_signed>()(negative, value, text); + } + + } // namespace detail + + template + void + checked_negate(R& r, T&& t, const std::string&, std::true_type) + { + // if we got to here, then `t` is a positive number that fits into + // `R`. So to avoid MSVC C4146, we first cast it to `R`. + // See https://github.com/jarro2783/cxxopts/issues/62 for more details. + r = static_cast(-static_cast(t - 1) - 1); + } + + template + void + checked_negate(R&, T&&, const std::string& text, std::false_type) + { + throw_or_mimic(text); + } + + template + void + integer_parser(const std::string& text, T& value) + { + parser_tool::IntegerDesc int_desc = parser_tool::SplitInteger(text); + + using US = typename std::make_unsigned::type; + constexpr bool is_signed = std::numeric_limits::is_signed; + + const bool negative = int_desc.negative.length() > 0; + const uint8_t base = int_desc.base.length() > 0 ? 16 : 10; + const std::string& value_match = int_desc.value; + + US result = 0; + + for (char ch : value_match) + { + US digit = 0; + + if (ch >= '0' && ch <= '9') + { + digit = static_cast(ch - '0'); + } + else if (base == 16 && ch >= 'a' && ch <= 'f') + { + digit = static_cast(ch - 'a' + 10); + } + else if (base == 16 && ch >= 'A' && ch <= 'F') + { + digit = static_cast(ch - 'A' + 10); + } + else + { + throw_or_mimic(text); + } + + US limit = 0; + if (negative) + { + limit = static_cast(std::abs(static_cast((std::numeric_limits::min)()))); + } + else + { + limit = (std::numeric_limits::max)(); + } + + if (base != 0 && result > limit / base) + { + throw_or_mimic(text); + } + if (result * base > limit - digit) + { + throw_or_mimic(text); + } + + result = static_cast(result * base + digit); + } + + detail::check_signed_range(negative, result, text); + + if (negative) + { + checked_negate(value, result, text, std::integral_constant()); + } + else + { + value = static_cast(result); + } + } + + template + void stringstream_parser(const std::string& text, T& value) + { + std::stringstream in(text); + in >> value; + if (!in) { + throw_or_mimic(text); + } + } + + template ::value>::type* = nullptr + > + void parse_value(const std::string& text, T& value) + { + integer_parser(text, value); + } + + inline + void + parse_value(const std::string& text, bool& value) + { + if (parser_tool::IsTrueText(text)) + { + value = true; + return; + } + + if (parser_tool::IsFalseText(text)) + { + value = false; + return; + } + + throw_or_mimic(text); + } + + inline + void + parse_value(const std::string& text, std::string& value) + { + value = text; + } + + // The fallback parser. It uses the stringstream parser to parse all types + // that have not been overloaded explicitly. It has to be placed in the + // source code before all other more specialized templates. + template ::value>::type* = nullptr + > + void + parse_value(const std::string& text, T& value) { + stringstream_parser(text, value); + } + +#ifdef CXXOPTS_HAS_OPTIONAL + template + void + parse_value(const std::string& text, std::optional& value) + { + T result; + parse_value(text, result); + value = std::move(result); + } +#endif + + inline + void parse_value(const std::string& text, char& c) + { + if (text.length() != 1) + { + throw_or_mimic(text); + } + + c = text[0]; + } + + template + void + parse_value(const std::string& text, std::vector& value) + { + if (text.empty()) { + T v; + parse_value(text, v); + value.emplace_back(std::move(v)); + return; + } + std::stringstream in(text); + std::string token; + while (!in.eof() && std::getline(in, token, CXXOPTS_VECTOR_DELIMITER)) { + T v; + parse_value(token, v); + value.emplace_back(std::move(v)); + } + } + + template + void + add_value(const std::string& text, T& value) + { + parse_value(text, value); + } + + template + void + add_value(const std::string& text, std::vector& value) + { + T v; + add_value(text, v); + value.emplace_back(std::move(v)); + } + + template + struct type_is_container + { + static constexpr bool value = false; + }; + + template + struct type_is_container> + { + static constexpr bool value = true; + }; + + template + class abstract_value : public Value + { + using Self = abstract_value; + + public: + abstract_value() + : m_result(std::make_shared()) + , m_store(m_result.get()) + { + } + + explicit abstract_value(T* t) + : m_store(t) + { + } + + ~abstract_value() override = default; + + abstract_value& operator=(const abstract_value&) = default; + + abstract_value(const abstract_value& rhs) + { + if (rhs.m_result) + { + m_result = std::make_shared(); + m_store = m_result.get(); + } + else + { + m_store = rhs.m_store; + } + + m_default = rhs.m_default; + m_implicit = rhs.m_implicit; + m_default_value = rhs.m_default_value; + m_implicit_value = rhs.m_implicit_value; + } + + void + add(const std::string& text) const override + { + add_value(text, *m_store); + } + + void + parse(const std::string& text) const override + { + parse_value(text, *m_store); + } + + bool + is_container() const override + { + return type_is_container::value; + } + + void + parse() const override + { + parse_value(m_default_value, *m_store); + } + + bool + has_default() const override + { + return m_default; + } + + bool + has_implicit() const override + { + return m_implicit; + } + + std::shared_ptr + default_value(const std::string& value) override + { + m_default = true; + m_default_value = value; + return shared_from_this(); + } + + std::shared_ptr + implicit_value(const std::string& value) override + { + m_implicit = true; + m_implicit_value = value; + return shared_from_this(); + } + + std::shared_ptr + no_implicit_value() override + { + m_implicit = false; + return shared_from_this(); + } + + std::string + get_default_value() const override + { + return m_default_value; + } + + std::string + get_implicit_value() const override + { + return m_implicit_value; + } + + bool + is_boolean() const override + { + return std::is_same::value; + } + + const T& + get() const + { + if (m_store == nullptr) + { + return *m_result; + } + return *m_store; + } + + protected: + std::shared_ptr m_result{}; + T* m_store{}; + + bool m_default = false; + bool m_implicit = false; + + std::string m_default_value{}; + std::string m_implicit_value{}; + }; + + template + class standard_value : public abstract_value + { + public: + using abstract_value::abstract_value; + + CXXOPTS_NODISCARD + std::shared_ptr + clone() const override + { + return std::make_shared>(*this); + } + }; + + template <> + class standard_value : public abstract_value + { + public: + ~standard_value() override = default; + + standard_value() + { + set_default_and_implicit(); + } + + explicit standard_value(bool* b) + : abstract_value(b) + { + m_implicit = true; + m_implicit_value = "true"; + } + + std::shared_ptr + clone() const override + { + return std::make_shared>(*this); + } + + private: + + void + set_default_and_implicit() + { + m_default = true; + m_default_value = "false"; + m_implicit = true; + m_implicit_value = "true"; + } + }; + + } // namespace values + + template + std::shared_ptr + value() + { + return std::make_shared>(); + } + + template + std::shared_ptr + value(T& t) + { + return std::make_shared>(&t); + } + + class OptionAdder; + + CXXOPTS_NODISCARD + inline + const std::string& + first_or_empty(const OptionNames& long_names) + { + static const std::string empty{ "" }; + return long_names.empty() ? empty : long_names.front(); + } + + class OptionDetails + { + public: + OptionDetails + ( + std::string short_, + OptionNames long_, + String desc, + std::shared_ptr val + ) + : m_short(std::move(short_)) + , m_long(std::move(long_)) + , m_desc(std::move(desc)) + , m_value(std::move(val)) + , m_count(0) + { + m_hash = std::hash{}(first_long_name() + m_short); + } + + OptionDetails(const OptionDetails& rhs) + : m_desc(rhs.m_desc) + , m_value(rhs.m_value->clone()) + , m_count(rhs.m_count) + { + } + + OptionDetails(OptionDetails&& rhs) = default; + + CXXOPTS_NODISCARD + const String& + description() const + { + return m_desc; + } + + CXXOPTS_NODISCARD + const Value& + value() const { + return *m_value; + } + + CXXOPTS_NODISCARD + std::shared_ptr + make_storage() const + { + return m_value->clone(); + } + + CXXOPTS_NODISCARD + const std::string& + short_name() const + { + return m_short; + } + + CXXOPTS_NODISCARD + const std::string& + first_long_name() const + { + return first_or_empty(m_long); + } + + CXXOPTS_NODISCARD + const std::string& + essential_name() const + { + return m_long.empty() ? m_short : m_long.front(); + } + + CXXOPTS_NODISCARD + const OptionNames& + long_names() const + { + return m_long; + } + + std::size_t + hash() const + { + return m_hash; + } + + private: + std::string m_short{}; + OptionNames m_long{}; + String m_desc{}; + std::shared_ptr m_value{}; + int m_count; + + std::size_t m_hash{}; + }; + + struct HelpOptionDetails + { + std::string s; + OptionNames l; + String desc; + bool has_default; + std::string default_value; + bool has_implicit; + std::string implicit_value; + std::string arg_help; + bool is_container; + bool is_boolean; + }; + + struct HelpGroupDetails + { + std::string name{}; + std::string description{}; + std::vector options{}; + }; + + class OptionValue + { + public: + void + add + ( + const std::shared_ptr& details, + const std::string& text + ) + { + ensure_value(details); + ++m_count; + m_value->add(text); + m_long_names = &details->long_names(); + } + + void + parse + ( + const std::shared_ptr& details, + const std::string& text + ) + { + ensure_value(details); + ++m_count; + m_value->parse(text); + m_long_names = &details->long_names(); + } + + void + parse_default(const std::shared_ptr& details) + { + ensure_value(details); + m_default = true; + m_long_names = &details->long_names(); + m_value->parse(); + } + + void + parse_no_value(const std::shared_ptr& details) + { + m_long_names = &details->long_names(); + } + +#if defined(CXXOPTS_NULL_DEREF_IGNORE) + CXXOPTS_DIAGNOSTIC_PUSH + CXXOPTS_IGNORE_WARNING("-Wnull-dereference") +#endif + + CXXOPTS_NODISCARD + std::size_t + count() const noexcept + { + return m_count; + } + +#if defined(CXXOPTS_NULL_DEREF_IGNORE) + CXXOPTS_DIAGNOSTIC_POP +#endif + + // TODO: maybe default options should count towards the number of arguments + CXXOPTS_NODISCARD + bool + has_default() const noexcept + { + return m_default; + } + + template + const T& + as() const + { + if (m_value == nullptr) { + throw_or_mimic( + m_long_names == nullptr ? "" : first_or_empty(*m_long_names)); + } + + return CXXOPTS_RTTI_CAST&>(*m_value).get(); + } + +#ifdef CXXOPTS_HAS_OPTIONAL + template + std::optional + as_optional() const + { + if (m_value == nullptr) { + return std::nullopt; + } + return as(); + } +#endif + + private: + void + ensure_value(const std::shared_ptr& details) + { + if (m_value == nullptr) + { + m_value = details->make_storage(); + } + } + + + const OptionNames* m_long_names = nullptr; + // Holding this pointer is safe, since OptionValue's only exist in key-value pairs, + // where the key has the string we point to. + std::shared_ptr m_value{}; + std::size_t m_count = 0; + bool m_default = false; + }; + + class KeyValue + { + public: + KeyValue(std::string key_, std::string value_) noexcept + : m_key(std::move(key_)) + , m_value(std::move(value_)) + { + } + + CXXOPTS_NODISCARD + const std::string& + key() const + { + return m_key; + } + + CXXOPTS_NODISCARD + const std::string& + value() const + { + return m_value; + } + + template + T + as() const + { + T result; + values::parse_value(m_value, result); + return result; + } + + private: + std::string m_key; + std::string m_value; + }; + + using ParsedHashMap = std::unordered_map; + using NameHashMap = std::unordered_map; + + class ParseResult + { + public: + class Iterator + { + public: + using iterator_category = std::forward_iterator_tag; + using value_type = KeyValue; + using difference_type = void; + using pointer = const KeyValue*; + using reference = const KeyValue&; + + Iterator() = default; + Iterator(const Iterator&) = default; + + // GCC complains about m_iter not being initialised in the member + // initializer list + CXXOPTS_DIAGNOSTIC_PUSH + CXXOPTS_IGNORE_WARNING("-Weffc++") + Iterator(const ParseResult* pr, bool end = false) + : m_pr(pr) + { + if (end) + { + m_sequential = false; + m_iter = m_pr->m_defaults.end(); + } + else + { + m_sequential = true; + m_iter = m_pr->m_sequential.begin(); + + if (m_iter == m_pr->m_sequential.end()) + { + m_sequential = false; + m_iter = m_pr->m_defaults.begin(); + } + } + } + CXXOPTS_DIAGNOSTIC_POP + + Iterator& operator++() + { + ++m_iter; + if (m_sequential && m_iter == m_pr->m_sequential.end()) + { + m_sequential = false; + m_iter = m_pr->m_defaults.begin(); + return *this; + } + return *this; + } + + Iterator operator++(int) + { + Iterator retval = *this; + ++(*this); + return retval; + } + + bool operator==(const Iterator& other) const + { + return (m_sequential == other.m_sequential) && (m_iter == other.m_iter); + } + + bool operator!=(const Iterator& other) const + { + return !(*this == other); + } + + const KeyValue& operator*() + { + return *m_iter; + } + + const KeyValue* operator->() + { + return m_iter.operator->(); + } + + private: + const ParseResult* m_pr; + std::vector::const_iterator m_iter; + bool m_sequential = true; + }; + + ParseResult() = default; + ParseResult(const ParseResult&) = default; + + ParseResult(NameHashMap&& keys, ParsedHashMap&& values, std::vector sequential, + std::vector default_opts, std::vector&& unmatched_args) + : m_keys(std::move(keys)) + , m_values(std::move(values)) + , m_sequential(std::move(sequential)) + , m_defaults(std::move(default_opts)) + , m_unmatched(std::move(unmatched_args)) + { + } + + ParseResult& operator=(ParseResult&&) = default; + ParseResult& operator=(const ParseResult&) = default; + + Iterator + begin() const + { + return Iterator(this); + } + + Iterator + end() const + { + return Iterator(this, true); + } + + std::size_t + count(const std::string& o) const + { + auto iter = m_keys.find(o); + if (iter == m_keys.end()) + { + return 0; + } + + auto viter = m_values.find(iter->second); + + if (viter == m_values.end()) + { + return 0; + } + + return viter->second.count(); + } + + const OptionValue& + operator[](const std::string& option) const + { + auto iter = m_keys.find(option); + + if (iter == m_keys.end()) + { + throw_or_mimic(option); + } + + auto viter = m_values.find(iter->second); + + if (viter == m_values.end()) + { + throw_or_mimic(option); + } + + return viter->second; + } + +#ifdef CXXOPTS_HAS_OPTIONAL + template + std::optional + as_optional(const std::string& option) const + { + auto iter = m_keys.find(option); + if (iter != m_keys.end()) + { + auto viter = m_values.find(iter->second); + if (viter != m_values.end()) + { + return viter->second.as_optional(); + } + } + return std::nullopt; + } +#endif + + const std::vector& + arguments() const + { + return m_sequential; + } + + const std::vector& + unmatched() const + { + return m_unmatched; + } + + const std::vector& + defaults() const + { + return m_defaults; + } + + const std::string + arguments_string() const + { + std::string result; + for (const auto& kv : m_sequential) + { + result += kv.key() + " = " + kv.value() + "\n"; + } + for (const auto& kv : m_defaults) + { + result += kv.key() + " = " + kv.value() + " " + "(default)" + "\n"; + } + return result; + } + + private: + NameHashMap m_keys{}; + ParsedHashMap m_values{}; + std::vector m_sequential{}; + std::vector m_defaults{}; + std::vector m_unmatched{}; + }; + + struct Option + { + Option + ( + std::string opts, + std::string desc, + std::shared_ptr value = ::cxxopts::value(), + std::string arg_help = "" + ) + : opts_(std::move(opts)) + , desc_(std::move(desc)) + , value_(std::move(value)) + , arg_help_(std::move(arg_help)) + { + } + + std::string opts_; + std::string desc_; + std::shared_ptr value_; + std::string arg_help_; + }; + + using OptionMap = std::unordered_map>; + using PositionalList = std::vector; + using PositionalListIterator = PositionalList::const_iterator; + + class OptionParser + { + public: + OptionParser(const OptionMap& options, const PositionalList& positional, bool allow_unrecognised) + : m_options(options) + , m_positional(positional) + , m_allow_unrecognised(allow_unrecognised) + { + } + + ParseResult + parse(int argc, const char* const* argv); + + bool + consume_positional(const std::string& a, PositionalListIterator& next); + + void + checked_parse_arg + ( + int argc, + const char* const* argv, + int& current, + const std::shared_ptr& value, + const std::string& name + ); + + void + add_to_option(const std::shared_ptr& value, const std::string& arg); + + void + parse_option + ( + const std::shared_ptr& value, + const std::string& name, + const std::string& arg = "" + ); + + void + parse_default(const std::shared_ptr& details); + + void + parse_no_value(const std::shared_ptr& details); + + private: + + void finalise_aliases(); + + const OptionMap& m_options; + const PositionalList& m_positional; + + std::vector m_sequential{}; + std::vector m_defaults{}; + bool m_allow_unrecognised; + + ParsedHashMap m_parsed{}; + NameHashMap m_keys{}; + }; + + class Options + { + public: + + explicit Options(std::string program_name, std::string help_string = "") + : m_program(std::move(program_name)) + , m_help_string(toLocalString(std::move(help_string))) + , m_custom_help("[OPTION...]") + , m_positional_help("positional parameters") + , m_show_positional(false) + , m_allow_unrecognised(false) + , m_width(76) + , m_tab_expansion(false) + , m_options(std::make_shared()) + { + } + + Options& + positional_help(std::string help_text) + { + m_positional_help = std::move(help_text); + return *this; + } + + Options& + custom_help(std::string help_text) + { + m_custom_help = std::move(help_text); + return *this; + } + + Options& + show_positional_help() + { + m_show_positional = true; + return *this; + } + + Options& + allow_unrecognised_options() + { + m_allow_unrecognised = true; + return *this; + } + + Options& + set_width(std::size_t width) + { + m_width = width; + return *this; + } + + Options& + set_tab_expansion(bool expansion = true) + { + m_tab_expansion = expansion; + return *this; + } + + ParseResult + parse(int argc, const char* const* argv); + + OptionAdder + add_options(std::string group = ""); + + void + add_options + ( + const std::string& group, + std::initializer_list