Exemple #1
0
 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() );
 }
Exemple #2
0
 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() );
 }