Transport for raw args (copied from main args, or supplied via init list for testing)
| 8738 | |
| 8739 | // Transport for raw args (copied from main args, or supplied via init list for testing) |
| 8740 | class Args { |
| 8741 | friend TokenStream; |
| 8742 | std::string m_exeName; |
| 8743 | std::vector<std::string> m_args; |
| 8744 | |
| 8745 | public: |
| 8746 | Args( int argc, char const* const* argv ) |
| 8747 | : m_exeName(argv[0]), |
| 8748 | m_args(argv + 1, argv + argc) {} |
| 8749 | |
| 8750 | Args( std::initializer_list<std::string> args ) |
| 8751 | : m_exeName( *args.begin() ), |
| 8752 | m_args( args.begin()+1, args.end() ) |
| 8753 | {} |
| 8754 | |
| 8755 | auto exeName() const -> std::string { |
| 8756 | return m_exeName; |
| 8757 | } |
| 8758 | }; |
| 8759 | |
| 8760 | // Wraps a token coming from a token stream. These may not directly correspond to strings as a single string |
| 8761 | // may encode an option + its argument if the : or = form is used |