Transport for raw args (copied from main args, or supplied via init list for testing)
| 8822 | |
| 8823 | // Transport for raw args (copied from main args, or supplied via init list for testing) |
| 8824 | class Args { |
| 8825 | friend TokenStream; |
| 8826 | std::string m_exeName; |
| 8827 | std::vector<std::string> m_args; |
| 8828 | |
| 8829 | public: |
| 8830 | Args( int argc, char const* const* argv ) |
| 8831 | : m_exeName(argv[0]), |
| 8832 | m_args(argv + 1, argv + argc) {} |
| 8833 | |
| 8834 | Args( std::initializer_list<std::string> args ) |
| 8835 | : m_exeName( *args.begin() ), |
| 8836 | m_args( args.begin()+1, args.end() ) |
| 8837 | {} |
| 8838 | |
| 8839 | auto exeName() const -> std::string { |
| 8840 | return m_exeName; |
| 8841 | } |
| 8842 | }; |
| 8843 | |
| 8844 | // Wraps a token coming from a token stream. These may not directly correspond to strings as a single string |
| 8845 | // may encode an option + its argument if the : or = form is used |