Transport for raw args (copied from main args, or supplied via init list for testing)
| 6711 | |
| 6712 | // Transport for raw args (copied from main args, or supplied via init list for testing) |
| 6713 | class Args { |
| 6714 | friend TokenStream; |
| 6715 | std::string m_exeName; |
| 6716 | std::vector<std::string> m_args; |
| 6717 | |
| 6718 | public: |
| 6719 | Args( int argc, char const* const* argv ) |
| 6720 | : m_exeName(argv[0]), |
| 6721 | m_args(argv + 1, argv + argc) {} |
| 6722 | |
| 6723 | Args( std::initializer_list<std::string> args ) |
| 6724 | : m_exeName( *args.begin() ), |
| 6725 | m_args( args.begin()+1, args.end() ) |
| 6726 | {} |
| 6727 | |
| 6728 | auto exeName() const -> std::string { |
| 6729 | return m_exeName; |
| 6730 | } |
| 6731 | }; |
| 6732 | |
| 6733 | // Wraps a token coming from a token stream. These may not directly correspond to strings as a single string |
| 6734 | // may encode an option + its argument if the : or = form is used |