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
|
||||
Copyright (C) 2020 rexy712
|
||||
Copyright (C) 2020-2022 rexy712
|
||||
|
||||
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
|
||||
@ -30,7 +30,7 @@
|
||||
#include "utility.hpp"
|
||||
#include "rexy.hpp"
|
||||
#include "buffer.hpp"
|
||||
|
||||
#include "string_view.hpp"
|
||||
|
||||
namespace rexy{
|
||||
|
||||
@ -38,7 +38,7 @@ namespace rexy{
|
||||
class filerd
|
||||
{
|
||||
private:
|
||||
FILE* m_fp = nullptr;
|
||||
std::FILE* m_fp = nullptr;
|
||||
|
||||
public:
|
||||
constexpr filerd(void)noexcept = default;
|
||||
@ -49,20 +49,20 @@ namespace rexy{
|
||||
~filerd(void)noexcept;
|
||||
filerd& operator=(const filerd&) = delete;
|
||||
constexpr filerd& operator=(filerd&& f)noexcept{
|
||||
swap(m_fp, f.m_fp);
|
||||
rexy::swap(m_fp, f.m_fp);
|
||||
return *this;
|
||||
}
|
||||
|
||||
void reset(FILE* fp = nullptr)noexcept;
|
||||
FILE* release(void)noexcept;
|
||||
void reset(std::FILE* fp = nullptr)noexcept;
|
||||
std::FILE* release(void)noexcept;
|
||||
std::size_t length(void)noexcept;
|
||||
std::size_t position(void)const noexcept;
|
||||
void rewind(std::size_t pos = 0)noexcept;
|
||||
|
||||
operator FILE*(void)noexcept;
|
||||
operator const FILE*(void)const noexcept;
|
||||
FILE* get(void)noexcept;
|
||||
const FILE* get(void)const noexcept;
|
||||
operator std::FILE*(void)noexcept;
|
||||
operator const std::FILE*(void)const noexcept;
|
||||
std::FILE* get(void)noexcept;
|
||||
const std::FILE* get(void)const noexcept;
|
||||
operator bool(void)const 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);
|
||||
|
||||
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
|
||||
Copyright (C) 2020 rexy712
|
||||
Copyright (C) 2020-2022 rexy712
|
||||
|
||||
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
|
||||
@ -21,6 +21,7 @@
|
||||
//which is not standard in c++ as of c++23, though it is in c since c11.
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "rexy/filerd.hpp"
|
||||
|
||||
#include <cstdio> //fopen, fclose
|
||||
@ -30,47 +31,47 @@
|
||||
namespace rexy{
|
||||
|
||||
filerd::filerd(const char* f, const char* mode)noexcept:
|
||||
m_fp(fopen(f, mode)){}
|
||||
m_fp(std::fopen(f, mode)){}
|
||||
filerd::~filerd(void)noexcept{
|
||||
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)
|
||||
fclose(m_fp);
|
||||
std::fclose(m_fp);
|
||||
m_fp = fp;
|
||||
}
|
||||
FILE* filerd::release(void)noexcept{
|
||||
std::FILE* filerd::release(void)noexcept{
|
||||
return std::exchange(m_fp, nullptr);
|
||||
}
|
||||
std::size_t filerd::length(void)noexcept{
|
||||
if(!m_fp)
|
||||
return 0;
|
||||
std::size_t tmp, ret;
|
||||
tmp = ftell(m_fp);
|
||||
fseek(m_fp, 0, SEEK_END);
|
||||
ret = ftell(m_fp);
|
||||
fseek(m_fp, long(tmp), SEEK_SET);
|
||||
tmp = std::ftell(m_fp);
|
||||
std::fseek(m_fp, 0, SEEK_END);
|
||||
ret = std::ftell(m_fp);
|
||||
std::fseek(m_fp, long(tmp), SEEK_SET);
|
||||
return ret;
|
||||
}
|
||||
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{
|
||||
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;
|
||||
}
|
||||
filerd::operator const FILE*(void)const noexcept{
|
||||
filerd::operator const std::FILE*(void)const noexcept{
|
||||
return m_fp;
|
||||
}
|
||||
FILE* filerd::get(void)noexcept{
|
||||
std::FILE* filerd::get(void)noexcept{
|
||||
return m_fp;
|
||||
}
|
||||
const FILE* filerd::get(void)const noexcept{
|
||||
const std::FILE* filerd::get(void)const noexcept{
|
||||
return m_fp;
|
||||
}
|
||||
filerd::operator bool(void)const noexcept{
|
||||
@ -78,7 +79,7 @@ namespace rexy{
|
||||
}
|
||||
|
||||
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 ret;
|
||||
@ -91,7 +92,7 @@ namespace rexy{
|
||||
rexy::string ret;
|
||||
int c;
|
||||
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;
|
||||
ret.append(&ch, 1);
|
||||
if(++count == max)
|
||||
@ -108,9 +109,9 @@ namespace rexy{
|
||||
return ret;
|
||||
}
|
||||
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());
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user