Update filerd to use std namespace types/functions.
This commit is contained in:
parent
6372262304
commit
503efeb6b5
@ -1,6 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
This file is a part of rexy's general purpose library
|
This file is a part of rexy's general purpose library
|
||||||
Copyright (C) 2020 rexy712
|
Copyright (C) 2020-2022 rexy712
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -30,7 +30,7 @@
|
|||||||
#include "utility.hpp"
|
#include "utility.hpp"
|
||||||
#include "rexy.hpp"
|
#include "rexy.hpp"
|
||||||
#include "buffer.hpp"
|
#include "buffer.hpp"
|
||||||
|
#include "string_view.hpp"
|
||||||
|
|
||||||
namespace rexy{
|
namespace rexy{
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ namespace rexy{
|
|||||||
class filerd
|
class filerd
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
FILE* m_fp = nullptr;
|
std::FILE* m_fp = nullptr;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
constexpr filerd(void)noexcept = default;
|
constexpr filerd(void)noexcept = default;
|
||||||
@ -49,20 +49,20 @@ namespace rexy{
|
|||||||
~filerd(void)noexcept;
|
~filerd(void)noexcept;
|
||||||
filerd& operator=(const filerd&) = delete;
|
filerd& operator=(const filerd&) = delete;
|
||||||
constexpr filerd& operator=(filerd&& f)noexcept{
|
constexpr filerd& operator=(filerd&& f)noexcept{
|
||||||
swap(m_fp, f.m_fp);
|
rexy::swap(m_fp, f.m_fp);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void reset(FILE* fp = nullptr)noexcept;
|
void reset(std::FILE* fp = nullptr)noexcept;
|
||||||
FILE* release(void)noexcept;
|
std::FILE* release(void)noexcept;
|
||||||
std::size_t length(void)noexcept;
|
std::size_t length(void)noexcept;
|
||||||
std::size_t position(void)const noexcept;
|
std::size_t position(void)const noexcept;
|
||||||
void rewind(std::size_t pos = 0)noexcept;
|
void rewind(std::size_t pos = 0)noexcept;
|
||||||
|
|
||||||
operator FILE*(void)noexcept;
|
operator std::FILE*(void)noexcept;
|
||||||
operator const FILE*(void)const noexcept;
|
operator const std::FILE*(void)const noexcept;
|
||||||
FILE* get(void)noexcept;
|
std::FILE* get(void)noexcept;
|
||||||
const FILE* get(void)const noexcept;
|
const std::FILE* get(void)const noexcept;
|
||||||
operator bool(void)const noexcept;
|
operator bool(void)const noexcept;
|
||||||
|
|
||||||
std::size_t read(char* dest, std::size_t bytes)noexcept;
|
std::size_t read(char* dest, std::size_t bytes)noexcept;
|
||||||
@ -71,7 +71,7 @@ namespace rexy{
|
|||||||
rexy::buffer<char> read_bin(std::size_t bytes)noexcept(std::is_nothrow_constructible<rexy::buffer<char>, char*, std::size_t>::value);
|
rexy::buffer<char> read_bin(std::size_t bytes)noexcept(std::is_nothrow_constructible<rexy::buffer<char>, char*, std::size_t>::value);
|
||||||
|
|
||||||
std::size_t write(const char* c, std::size_t bytes)noexcept;
|
std::size_t write(const char* c, std::size_t bytes)noexcept;
|
||||||
std::size_t write(const rexy::string_base<char>& s)noexcept;
|
std::size_t write(rexy::string_view s)noexcept;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
This file is a part of rexy's general purpose library
|
This file is a part of rexy's general purpose library
|
||||||
Copyright (C) 2020 rexy712
|
Copyright (C) 2020-2022 rexy712
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -21,6 +21,7 @@
|
|||||||
//which is not standard in c++ as of c++23, though it is in c since c11.
|
//which is not standard in c++ as of c++23, though it is in c since c11.
|
||||||
#define _CRT_SECURE_NO_WARNINGS
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "rexy/filerd.hpp"
|
#include "rexy/filerd.hpp"
|
||||||
|
|
||||||
#include <cstdio> //fopen, fclose
|
#include <cstdio> //fopen, fclose
|
||||||
@ -30,47 +31,47 @@
|
|||||||
namespace rexy{
|
namespace rexy{
|
||||||
|
|
||||||
filerd::filerd(const char* f, const char* mode)noexcept:
|
filerd::filerd(const char* f, const char* mode)noexcept:
|
||||||
m_fp(fopen(f, mode)){}
|
m_fp(std::fopen(f, mode)){}
|
||||||
filerd::~filerd(void)noexcept{
|
filerd::~filerd(void)noexcept{
|
||||||
if(m_fp)
|
if(m_fp)
|
||||||
fclose(m_fp);
|
std::fclose(m_fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void filerd::reset(FILE* fp)noexcept{
|
void filerd::reset(std::FILE* fp)noexcept{
|
||||||
if(m_fp)
|
if(m_fp)
|
||||||
fclose(m_fp);
|
std::fclose(m_fp);
|
||||||
m_fp = fp;
|
m_fp = fp;
|
||||||
}
|
}
|
||||||
FILE* filerd::release(void)noexcept{
|
std::FILE* filerd::release(void)noexcept{
|
||||||
return std::exchange(m_fp, nullptr);
|
return std::exchange(m_fp, nullptr);
|
||||||
}
|
}
|
||||||
std::size_t filerd::length(void)noexcept{
|
std::size_t filerd::length(void)noexcept{
|
||||||
if(!m_fp)
|
if(!m_fp)
|
||||||
return 0;
|
return 0;
|
||||||
std::size_t tmp, ret;
|
std::size_t tmp, ret;
|
||||||
tmp = ftell(m_fp);
|
tmp = std::ftell(m_fp);
|
||||||
fseek(m_fp, 0, SEEK_END);
|
std::fseek(m_fp, 0, SEEK_END);
|
||||||
ret = ftell(m_fp);
|
ret = std::ftell(m_fp);
|
||||||
fseek(m_fp, long(tmp), SEEK_SET);
|
std::fseek(m_fp, long(tmp), SEEK_SET);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
std::size_t filerd::position(void)const noexcept{
|
std::size_t filerd::position(void)const noexcept{
|
||||||
return ftell(m_fp);
|
return std::ftell(m_fp);
|
||||||
}
|
}
|
||||||
void filerd::rewind(std::size_t pos)noexcept{
|
void filerd::rewind(std::size_t pos)noexcept{
|
||||||
fseek(m_fp, long(pos), SEEK_SET);
|
std::fseek(m_fp, long(pos), SEEK_SET);
|
||||||
}
|
}
|
||||||
|
|
||||||
filerd::operator FILE*(void)noexcept{
|
filerd::operator std::FILE*(void)noexcept{
|
||||||
return m_fp;
|
return m_fp;
|
||||||
}
|
}
|
||||||
filerd::operator const FILE*(void)const noexcept{
|
filerd::operator const std::FILE*(void)const noexcept{
|
||||||
return m_fp;
|
return m_fp;
|
||||||
}
|
}
|
||||||
FILE* filerd::get(void)noexcept{
|
std::FILE* filerd::get(void)noexcept{
|
||||||
return m_fp;
|
return m_fp;
|
||||||
}
|
}
|
||||||
const FILE* filerd::get(void)const noexcept{
|
const std::FILE* filerd::get(void)const noexcept{
|
||||||
return m_fp;
|
return m_fp;
|
||||||
}
|
}
|
||||||
filerd::operator bool(void)const noexcept{
|
filerd::operator bool(void)const noexcept{
|
||||||
@ -78,7 +79,7 @@ namespace rexy{
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::size_t filerd::read(char* dest, std::size_t bytes)noexcept{
|
std::size_t filerd::read(char* dest, std::size_t bytes)noexcept{
|
||||||
return fread(dest, 1, bytes, m_fp);
|
return std::fread(dest, 1, bytes, m_fp);
|
||||||
}
|
}
|
||||||
rexy::string filerd::read(std::size_t bytes)noexcept{
|
rexy::string filerd::read(std::size_t bytes)noexcept{
|
||||||
rexy::string ret;
|
rexy::string ret;
|
||||||
@ -91,7 +92,7 @@ namespace rexy{
|
|||||||
rexy::string ret;
|
rexy::string ret;
|
||||||
int c;
|
int c;
|
||||||
std::size_t count = 0;
|
std::size_t count = 0;
|
||||||
for(c = fgetc(m_fp);c != EOF && c != '\n';c = fgetc(m_fp)){
|
for(c = std::fgetc(m_fp);c != EOF && c != '\n';c = std::fgetc(m_fp)){
|
||||||
char ch = c;
|
char ch = c;
|
||||||
ret.append(&ch, 1);
|
ret.append(&ch, 1);
|
||||||
if(++count == max)
|
if(++count == max)
|
||||||
@ -108,9 +109,9 @@ namespace rexy{
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
std::size_t filerd::write(const char* c, std::size_t bytes)noexcept{
|
std::size_t filerd::write(const char* c, std::size_t bytes)noexcept{
|
||||||
return fwrite(c, 1, bytes, m_fp);
|
return std::fwrite(c, 1, bytes, m_fp);
|
||||||
}
|
}
|
||||||
std::size_t filerd::write(const rexy::string_base<char>& c)noexcept{
|
std::size_t filerd::write(rexy::string_view c)noexcept{
|
||||||
return write(c.data(), c.length());
|
return write(c.data(), c.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user