27 Kasım 2017 Pazartesi

iostreams mapped_file_source Sınıfı

Giriş
Sınıf şu isim alanı içinde.
namespace boost { namespace iostreams {
  class mapped_file_source {
    ...
  };
} } // End namespace boost::io
Sınıf sadece okuma amaçlı (readonly) metod sunar. Yazma işlemi için kullanılamaz. Bu sınıfın kardeşi mapped_file_sink sınıfıdır.
Constructor - default
Şöyle yaparız. Daha sonra open() çağrısı ile dosyayı açmak gerekir.
boost::iostreams::mapped_file_source f;
Constructor - string
İmzası şöyle.
explicit mapped_file_source( const std::string& path,
                             size_type length = max_length,
                             boost::intmax_t offset = 0 );
length parametresinin açıklaması şöyle.
length - The number of bytes to map. If this parameter is not specified, the entire file is mapped.
Şöyle yaparız.
bios::mapped_file_source f ("csv.txt");
Constructor - boost::filesystem::path
Şöyle yaparız.
path p = ...;
bios::mapped_file_source f (p);
close metodu
İmzası şöyle.
void close();
data metodu
Şöyle yaparız.
CsvFile parsed;
if (qi::parse(f.data(), f.data() + f.size(), CsvParser(), parsed))
{...}
is_open metodu
İmzası şöyle.
bool is_open() const;
Şöyle yaparız.
if (file.is_open()) {

  int* data = (int*)file.data();
  file.close();
}
open metodu
İmzası şöyle.
void open( const std::string& path,
           size_type length = max_length,
           boost::intmax_t offset = 0 );
Bu metod mmap64 metodunu çağırır.
(gdb) backtrace
mmap64 ()
...
iostreams::mapped_file_source::open<boost::iostreams::detail::path> ()
iostreams::mapped_file_source::open<boost::filesystem::path> () 
Şöyle yaparız.
struct _stat64 fileinfo;
const char* filename = ...;
int result = _stat64(filename, &fileinfo);
boost::iostreams::mapped_file_source file;

file.open(filename, numberOfBytes);
size metodu
Şöyle yaparız.
f.size()

Hiç yorum yok:

Yorum Gönder