static internal_string_type to_internal( const external_string_type & src ) { internal_string_type tmp; for ( external_string_type::const_iterator it( src.begin() ); it != src.end(); ++it ) tmp += *it; return tmp; }
wpath_traits::internal_string_type wpath_traits::to_internal( const external_string_type & src ) { locked = true; std::size_t work_size( src.size()+1 ); boost::scoped_array<wchar_t> work( new wchar_t[ work_size ] ); std::mbstate_t state = std::mbstate_t(); // perhaps unneeded, but cuts bug reports const external_string_type::value_type * from_next; internal_string_type::value_type * to_next; if ( converter()->in( state, src.c_str(), src.c_str()+src.size(), from_next, work.get(), work.get()+work_size, to_next ) != std::codecvt_base::ok ) boost::throw_exception( boost::filesystem::wfilesystem_error( "boost::filesystem::wpath::to_internal conversion error", system::error_code( system::posix::invalid_argument, system::system_category ) ) ); *to_next = L'\0'; return internal_string_type( work.get() ); }
mbpath_traits::internal_string_type mbpath_traits::to_internal( const external_string_type & src ) { std::size_t work_size( src.size()+1 ); boost::scoped_array<wchar_t> work( new wchar_t[ work_size ] ); std::mbstate_t state; const external_string_type::value_type * from_next; internal_string_type::value_type * to_next; if ( cvt->in( state, src.c_str(), src.c_str()+src.size(), from_next, work.get(), work.get()+work_size, to_next ) != std::codecvt_base::ok ) boost::throw_exception<fs::basic_filesystem_error<mbpath> >( fs::basic_filesystem_error<mbpath>( "user::mbpath::to_internal conversion error", boost::system::error_code( EINVAL, boost::system::errno_ecat ) ) ); *to_next = L'\0'; return internal_string_type( work.get() ); }