Update filerd to use std namespace types/functions.

This commit is contained in:
rexy712 2022-06-30 12:22:09 -07:00
parent 6372262304
commit 503efeb6b5
2 changed files with 32 additions and 31 deletions

View File

@ -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;
};
}

View File

@ -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());
}