#pragma once #include namespace fgc { // A parsed console command line: " [device] [option] [value]". // Examples: // "start" -> verb=start // "set fps 5" -> verb=set device=fps value=5 // "set camera jxlq 2" -> verb=set device=camera option=jxlq value=2 // "set motorctl kd180" -> verb=set device=motorctl option=kd180 struct Command { std::string verb; std::string device; std::string option; double value = 0.0; bool has_value = false; bool empty() const { return verb.empty(); } }; // Whitespace-tokenizing parser. Robust to commands with or without a trailing // numeric value and to non-numeric option strings (e.g. raw motor commands). // Replaces the fragile Boost.Spirit Qi grammar. Command parseCommand(const std::string& line); } // namespace fgc