8 #ifndef BOOST_NOWIDE_ARGS_HPP_INCLUDED     9 #define BOOST_NOWIDE_ARGS_HPP_INCLUDED    11 #include <boost/config.hpp>    13 #include <boost/nowide/stackstring.hpp>    14 #include <boost/nowide/windows.hpp>    21 #if !defined(BOOST_WINDOWS) && !defined(BOOST_NOWIDE_DOXYGEN)    27         args(
int&, 
char**&, 
char**&)
    63         args(
int& argc, 
char**& argv) :
    64             old_argc_(argc), old_argv_(argv), old_env_(0), old_argc_ptr_(&argc), old_argv_ptr_(&argv), old_env_ptr_(0)
    71         args(
int& argc, 
char**& argv, 
char**& env) :
    72             old_argc_(argc), old_argv_(argv), old_env_(env), old_argc_ptr_(&argc), old_argv_ptr_(&argv),
    84                 *old_argc_ptr_ = old_argc_;
    86                 *old_argv_ptr_ = old_argv_;
    88                 *old_env_ptr_ = old_env_;
   100                 p = CommandLineToArgvW(GetCommandLineW(), &argc);
   107             wargv_ptr(
const wargv_ptr&) = 
delete;
   108             wargv_ptr& operator=(
const wargv_ptr&) = 
delete;
   114             operator bool()
 const   118             const wchar_t* operator[](
size_t i)
 const   128             wenv_ptr() : p(GetEnvironmentStringsW())
   133                     FreeEnvironmentStringsW(p);
   135             wenv_ptr(
const wenv_ptr&) = 
delete;
   136             wenv_ptr& operator=(
const wenv_ptr&) = 
delete;
   138             operator const wchar_t*() 
const   144         void fix_args(
int& argc, 
char**& argv)
   146             const wargv_ptr wargv;
   148                 throw std::runtime_error(
"Could not get command line!");
   149             args_.resize(wargv.size() + 1, 0);
   150             arg_values_.resize(wargv.size());
   151             for(
int i = 0; i < wargv.size(); i++)
   152                 args_[i] = arg_values_[i].convert(wargv[i]);
   156         void fix_env(
char**& env)
   158             const wenv_ptr wstrings;
   160                 throw std::runtime_error(
"Could not get environment strings!");
   161             const wchar_t* wstrings_end = 0;
   163             for(wstrings_end = wstrings; *wstrings_end; wstrings_end += wcslen(wstrings_end) + 1)
   165             env_.
convert(wstrings, wstrings_end);
   166             envp_.resize(count + 1, 0);
   167             char* p = env_.
get();
   169             for(
int i = 0; i < count; i++)
   178         std::vector<char*> args_;
   179         std::vector<short_stackstring> arg_values_;
   181         std::vector<char*> envp_;
   188         char*** old_argv_ptr_;
   189         char*** old_env_ptr_;
 args(int &argc, char **&argv, char **&env)
Definition: args.hpp:71
args is a class that temporarily replaces standard main() function arguments with their equal,...
Definition: args.hpp:57
size_t strlen(const Char *s)
Definition: convert.hpp:26
args(int &argc, char **&argv)
Definition: args.hpp:63
output_char * convert(const input_char *input)
Definition: stackstring.hpp:92
output_char * get()
Return the converted, NULL-terminated string or NULL if no string was converted.
Definition: stackstring.hpp:127
basic_stackstring< char, wchar_t, 256 > stackstring
Definition: stackstring.hpp:199
~args()
Definition: args.hpp:81