// // Copyright (c) ZeroC, Inc. All rights reserved. // #include #include IceInternal::ArgVector::ArgVector(int argcP, const char* const argvP[]) { assert(argcP >= 0); _args.resize(static_cast(argcP)); for(size_t i = 0; i < static_cast(argcP); ++i) { _args[i] = argvP[i]; } setupArgcArgv(); } IceInternal::ArgVector::ArgVector(const ::std::vector< ::std::string>& vec) { _args = vec; setupArgcArgv(); } IceInternal::ArgVector::ArgVector(const ArgVector& rhs) { _args = rhs._args; setupArgcArgv(); } IceInternal::ArgVector& IceInternal::ArgVector::operator=(const ArgVector& rhs) { delete[] argv; argv = 0; _args = rhs._args; setupArgcArgv(); return *this; } IceInternal::ArgVector::~ArgVector() { delete[] argv; } void IceInternal::ArgVector::setupArgcArgv() { argc = static_cast(_args.size()); if((argv = new char*[static_cast(argc + 1)]) == 0) { throw ::std::bad_alloc(); } for(size_t i = 0; i < static_cast(argc); i++) { argv[i] = const_cast(_args[i].c_str()); } argv[argc] = 0; }