Change size_t to std::size_t

This commit is contained in:
rexy712 2022-06-23 15:54:09 -07:00
parent 61987d937b
commit 5ce29908df
23 changed files with 105 additions and 105 deletions

View File

@ -19,8 +19,8 @@
#ifndef REXY_ALGORITHM_TPP #ifndef REXY_ALGORITHM_TPP
#define REXY_ALGORITHM_TPP #define REXY_ALGORITHM_TPP
#include <cstdint> //SIZE_MAX #include <cstddef> //size_t
#include <cstdlib> //size_t #include <limits> //numeric_limits
namespace rexy{ namespace rexy{
@ -41,14 +41,14 @@ namespace rexy{
//Requires Iterators to be LegacyRandomAccessIterators //Requires Iterators to be LegacyRandomAccessIterators
template<class HIter, class NIter> template<class HIter, class NIter>
constexpr HIter two_way_search(HIter hstart, HIter hend, NIter nstart, NIter nend){ constexpr HIter two_way_search(HIter hstart, HIter hend, NIter nstart, NIter nend){
size_t j = 0; std::size_t j = 0;
size_t i = 0; std::size_t i = 0;
size_t nlen = nend - nstart; std::size_t nlen = nend - nstart;
size_t hlen = hend - hstart; std::size_t hlen = hend - hstart;
auto [suffix, period] = detail::critical_factorization(nstart, nend); auto [suffix, period] = detail::critical_factorization(nstart, nend);
if(detail::iter_compare(nstart, nstart + period, suffix)){ if(detail::iter_compare(nstart, nstart + period, suffix)){
size_t memory = SIZE_MAX; std::size_t memory = std::numeric_limits<std::size_t>::max();
while(j <= hlen - nlen){ while(j <= hlen - nlen){
i = max(suffix, memory) + 1; i = max(suffix, memory) + 1;
//right side //right side
@ -68,7 +68,7 @@ namespace rexy{
memory = nlen - period - 1; memory = nlen - period - 1;
}else{ }else{
j += (i - suffix); j += (i - suffix);
memory = SIZE_MAX; memory = std::numeric_limits<std::size_t>::max();
} }
} }
}else{ }else{
@ -83,10 +83,10 @@ namespace rexy{
if(i >= nlen){ if(i >= nlen){
i = suffix; i = suffix;
//left side //left side
while(i != SIZE_MAX && nstart[i] == hstart[i + j]){ while(i != std::numeric_limits<std::size_t>::max() && nstart[i] == hstart[i + j]){
--i; --i;
} }
if(i == SIZE_MAX){ if(i == std::numeric_limits<std::size_t>::max()){
return hstart + j; return hstart + j;
} }
j += period; j += period;

View File

@ -51,7 +51,7 @@ namespace rexy{
using void_pointer = void*; using void_pointer = void*;
using const_void_pointer = const void*; using const_void_pointer = const void*;
using value_type = T; using value_type = T;
using size_type = size_t; using size_type = std::size_t;
using difference_type = ptrdiff_t; using difference_type = ptrdiff_t;
using is_always_equal = std::true_type; using is_always_equal = std::true_type;
using propagate_on_container_copy_assignment = std::false_type; using propagate_on_container_copy_assignment = std::false_type;

View File

@ -21,7 +21,7 @@
#include "allocator.hpp" #include "allocator.hpp"
#include "detail/hasallocator.hpp" #include "detail/hasallocator.hpp"
#include <cstdlib> //size_t, ptrdiff_t #include <cstddef> //size_t, ptrdiff_t
#include <iterator> //reverse_iterator #include <iterator> //reverse_iterator
#include "compat/standard.hpp" #include "compat/standard.hpp"
@ -33,7 +33,7 @@ namespace rexy{
{ {
public: public:
using value_type = T; using value_type = T;
using size_type = size_t; using size_type = std::size_t;
using difference_type = ptrdiff_t; using difference_type = ptrdiff_t;
using pointer = T*; using pointer = T*;
using const_pointer = const T*; using const_pointer = const T*;

View File

@ -27,12 +27,12 @@
namespace rexy::cx{ namespace rexy::cx{
template<class T, size_t N> template<class T, std::size_t N>
class array class array
{ {
public: public:
using value_type = T; using value_type = T;
using size_type = size_t; using size_type = std::size_t;
using difference_type = ptrdiff_t; using difference_type = ptrdiff_t;
using reference = T&; using reference = T&;
using const_reference = const T&; using const_reference = const T&;
@ -125,7 +125,7 @@ namespace rexy::cx{
} }
}; };
template<size_t N> template<std::size_t N>
class array<bool,N> : public detail::bool_specialize_base class array<bool,N> : public detail::bool_specialize_base
{ {
public: public:

View File

@ -24,7 +24,7 @@
namespace rexy::cx{ namespace rexy::cx{
template<size_t N> template<std::size_t N>
struct hash<rexy::cx::string<N>> : public string_hash<rexy::cx::string<N>>{}; struct hash<rexy::cx::string<N>> : public string_hash<rexy::cx::string<N>>{};
} }

View File

@ -29,7 +29,7 @@ namespace rexy::cx::detail{
class bool_specialize_base class bool_specialize_base
{ {
protected: protected:
using size_type = size_t; using size_type = std::size_t;
using difference_type = ptrdiff_t; using difference_type = ptrdiff_t;
static constexpr size_type bits_per_byte = CHAR_BIT; static constexpr size_type bits_per_byte = CHAR_BIT;
@ -91,10 +91,10 @@ namespace rexy::cx::detail{
constexpr booleans& operator=(const booleans&)noexcept = default; constexpr booleans& operator=(const booleans&)noexcept = default;
constexpr booleans& operator=(booleans&&)noexcept = default; constexpr booleans& operator=(booleans&&)noexcept = default;
constexpr boolean operator[](size_t i){ constexpr boolean operator[](std::size_t i){
return boolean{m_value, i}; return boolean{m_value, i};
} }
constexpr boolean operator[](size_t i)const{ constexpr boolean operator[](std::size_t i)const{
return boolean{const_cast<uchar&>(m_value), i}; return boolean{const_cast<uchar&>(m_value), i};
} }
constexpr uchar& data(void){ constexpr uchar& data(void){

View File

@ -25,7 +25,7 @@
#include "../hash.hpp" #include "../hash.hpp"
#include <climits> //CHAR_BIT #include <climits> //CHAR_BIT
#include <cstddef> //size_t, ptrdiff_t #include <cstddef> //std::size_t, ptrdiff_t
#include <type_traits> //decay #include <type_traits> //decay
#include <initializer_list> #include <initializer_list>
@ -42,14 +42,14 @@ namespace rexy::cx{
template<class Key, class Value> template<class Key, class Value>
element(Key,Value) -> element<Key,Value>; element(Key,Value) -> element<Key,Value>;
template<class Key, class Value, size_t N, class Hash = hash<Key>> template<class Key, class Value, std::size_t N, class Hash = hash<Key>>
class hashmap class hashmap
{ {
public: public:
using key_type = Key; using key_type = Key;
using mapped_type = Value; using mapped_type = Value;
using value_type = element<Key,Value>; using value_type = element<Key,Value>;
using size_type = size_t; using size_type = std::size_t;
using difference_type = ptrdiff_t; using difference_type = ptrdiff_t;
using hasher = Hash; using hasher = Hash;
using reference = mapped_type&; using reference = mapped_type&;
@ -72,7 +72,7 @@ namespace rexy::cx{
noexcept(std::is_nothrow_default_constructible<value_type>::value && noexcept(std::is_nothrow_default_constructible<value_type>::value &&
std::is_nothrow_copy_constructible<value_type>::value && std::is_nothrow_copy_constructible<value_type>::value &&
std::is_nothrow_move_assignable<mapped_type>::value && std::is_nothrow_move_assignable<mapped_type>::value &&
std::is_nothrow_invocable<Hash,Key,size_t>::value); std::is_nothrow_invocable<Hash,Key,std::size_t>::value);
//no key checks. give a correct key or get a random answer :) //no key checks. give a correct key or get a random answer :)
template<class U, class UHash = hash<std::decay_t<U>>> template<class U, class UHash = hash<std::decay_t<U>>>

View File

@ -23,12 +23,12 @@
namespace rexy::cx{ namespace rexy::cx{
template<class Key, class Value, size_t N, class Hash> template<class Key, class Value, std::size_t N, class Hash>
constexpr hashmap<Key,Value,N,Hash>::hashmap(const value_type(&elements)[N]) constexpr hashmap<Key,Value,N,Hash>::hashmap(const value_type(&elements)[N])
noexcept(std::is_nothrow_default_constructible<value_type>::value && noexcept(std::is_nothrow_default_constructible<value_type>::value &&
std::is_nothrow_copy_constructible<value_type>::value && std::is_nothrow_copy_constructible<value_type>::value &&
std::is_nothrow_move_assignable<mapped_type>::value && std::is_nothrow_move_assignable<mapped_type>::value &&
std::is_nothrow_invocable<Hash,Key,size_t>::value) std::is_nothrow_invocable<Hash,Key,std::size_t>::value)
{ {
array<vector<value_type,N>,N> buckets; array<vector<value_type,N>,N> buckets;
array<size_type,N> key_hashes; //full hash values for keys to verify good index values array<size_type,N> key_hashes; //full hash values for keys to verify good index values
@ -101,7 +101,7 @@ namespace rexy::cx{
} }
//no key checks. give a correct key or get a random answer :) //no key checks. give a correct key or get a random answer :)
template<class Key, class Value, size_t N, class Hash> template<class Key, class Value, std::size_t N, class Hash>
template<class U, class UHash> template<class U, class UHash>
constexpr auto hashmap<Key,Value,N,Hash>::operator[](U&& key)noexcept -> reference{ constexpr auto hashmap<Key,Value,N,Hash>::operator[](U&& key)noexcept -> reference{
auto d = m_g[UHash{}(std::forward<U>(key), 0) % max_size]; auto d = m_g[UHash{}(std::forward<U>(key), 0) % max_size];
@ -109,7 +109,7 @@ namespace rexy::cx{
return m_elements[d & ~single_bucket_bit].value; return m_elements[d & ~single_bucket_bit].value;
return m_elements[UHash{}(std::forward<U>(key), d) % max_size].value; return m_elements[UHash{}(std::forward<U>(key), d) % max_size].value;
} }
template<class Key, class Value, size_t N, class Hash> template<class Key, class Value, std::size_t N, class Hash>
template<class U, class UHash> template<class U, class UHash>
constexpr auto hashmap<Key,Value,N,Hash>::operator[](U&& key)const noexcept -> const_reference{ constexpr auto hashmap<Key,Value,N,Hash>::operator[](U&& key)const noexcept -> const_reference{
auto d = m_g[UHash{}(std::forward<U>(key), 0) % max_size]; auto d = m_g[UHash{}(std::forward<U>(key), 0) % max_size];
@ -118,7 +118,7 @@ namespace rexy::cx{
return m_elements[UHash{}(std::forward<U>(key), d) % max_size].value; return m_elements[UHash{}(std::forward<U>(key), d) % max_size].value;
} }
template<class Key, class Value, size_t N, class Hash> template<class Key, class Value, std::size_t N, class Hash>
template<class U, class UHash> template<class U, class UHash>
constexpr bool hashmap<Key,Value,N,Hash>::contains(U&& key)const noexcept{ constexpr bool hashmap<Key,Value,N,Hash>::contains(U&& key)const noexcept{
const auto hashval = UHash{}(std::forward<U>(key), 0); const auto hashval = UHash{}(std::forward<U>(key), 0);
@ -129,7 +129,7 @@ namespace rexy::cx{
return m_elements[UHash{}(std::forward<U>(key), d) % max_size].key == std::forward<U>(key); return m_elements[UHash{}(std::forward<U>(key), d) % max_size].key == std::forward<U>(key);
} }
template<class Key, class Value, size_t N, class Hash = hash<Key>> template<class Key, class Value, std::size_t N, class Hash = hash<Key>>
constexpr auto make_hashmap(const typename hashmap<Key,Value,N,Hash>::value_type(&list)[N]){ constexpr auto make_hashmap(const typename hashmap<Key,Value,N,Hash>::value_type(&list)[N]){
return hashmap<Key,Value,N,Hash>(list); return hashmap<Key,Value,N,Hash>(list);
} }

View File

@ -42,7 +42,7 @@ namespace rexy::cx{
namespace rexy::cx{ namespace rexy::cx{
template<size_t N, class Char = char> template<std::size_t N, class Char = char>
class string class string
{ {
public: public:

View File

@ -30,12 +30,12 @@
namespace rexy::cx{ namespace rexy::cx{
template<class T, size_t N> template<class T, std::size_t N>
class vector class vector
{ {
public: public:
using value_type = T; using value_type = T;
using size_type = size_t; using size_type = std::size_t;
using difference_type = ptrdiff_t; using difference_type = ptrdiff_t;
using iterator = T*; using iterator = T*;
using const_iterator = const T*; using const_iterator = const T*;
@ -244,7 +244,7 @@ namespace rexy::cx{
} }
}; };
template<size_t N> template<std::size_t N>
class vector<bool,N> : public detail::bool_specialize_base class vector<bool,N> : public detail::bool_specialize_base
{ {
public: public:

View File

@ -46,7 +46,7 @@ namespace rexy{
constexpr operator value_type(void); constexpr operator value_type(void);
private: private:
template<size_t... Is> template<std::size_t... Is>
constexpr value_type get_value_(std::index_sequence<Is...>); constexpr value_type get_value_(std::index_sequence<Is...>);
}; };
@ -70,7 +70,7 @@ namespace rexy{
constexpr operator ret_t(void); constexpr operator ret_t(void);
private: private:
template<size_t... Is> template<std::size_t... Is>
constexpr decltype(auto) get_value_(std::index_sequence<Is...>); constexpr decltype(auto) get_value_(std::index_sequence<Is...>);
}; };
@ -87,7 +87,7 @@ namespace rexy{
return get_value_(std::make_index_sequence<sizeof...(Args)>()); return get_value_(std::make_index_sequence<sizeof...(Args)>());
} }
template<class T, class... Args> template<class T, class... Args>
template<size_t... Is> template<std::size_t... Is>
constexpr auto deferred<T,Args...>::get_value_(std::index_sequence<Is...>) -> value_type{ constexpr auto deferred<T,Args...>::get_value_(std::index_sequence<Is...>) -> value_type{
return T{std::forward<std::tuple_element_t<Is,decltype(m_args)>>(std::get<Is>(m_args))...}; return T{std::forward<std::tuple_element_t<Is,decltype(m_args)>>(std::get<Is>(m_args))...};
} }
@ -112,7 +112,7 @@ namespace rexy{
return get_value_(std::make_index_sequence<sizeof...(Args)>()); return get_value_(std::make_index_sequence<sizeof...(Args)>());
} }
template<class Fn, class... Args> template<class Fn, class... Args>
template<size_t... Is> template<std::size_t... Is>
constexpr decltype(auto) deferred_function<Fn,Args...>::get_value_(std::index_sequence<Is...>){ constexpr decltype(auto) deferred_function<Fn,Args...>::get_value_(std::index_sequence<Is...>){
return std::forward<Fn>(m_fn)(std::forward<std::tuple_element_t<Is,decltype(m_args)>>(std::get<Is>(m_args))...); return std::forward<Fn>(m_fn)(std::forward<std::tuple_element_t<Is,decltype(m_args)>>(std::get<Is>(m_args))...);
} }

View File

@ -25,7 +25,7 @@
#include <functional> //less, greater #include <functional> //less, greater
#include <utility> //pair #include <utility> //pair
#include <iterator> //iterator_traits #include <iterator> //iterator_traits
#include <cstdlib> //size_t #include <cstddef> //size_t
namespace rexy::detail{ namespace rexy::detail{
@ -51,12 +51,12 @@ namespace rexy::detail{
return left; return left;
} }
template<class Iter, class Op> template<class Iter, class Op>
constexpr std::pair<size_t,size_t> max_suffix(const Iter& needle, size_t nlen, const Op& op = Op()){ constexpr std::pair<std::size_t,size_t> max_suffix(const Iter& needle, std::size_t nlen, const Op& op = Op()){
using value_type = typename std::iterator_traits<Iter>::value_type; using value_type = typename std::iterator_traits<Iter>::value_type;
size_t max_suffix = -1; std::size_t max_suffix = -1;
size_t j = 0; std::size_t j = 0;
size_t k = 1; std::size_t k = 1;
size_t period = 1; std::size_t period = 1;
value_type a; value_type a;
value_type b; value_type b;
@ -82,7 +82,7 @@ namespace rexy::detail{
return {max_suffix, period}; return {max_suffix, period};
} }
template<class Iter> template<class Iter>
constexpr std::pair<size_t,size_t> critical_factorization(const Iter& nstart, const Iter& nend){ constexpr std::pair<std::size_t,size_t> critical_factorization(const Iter& nstart, const Iter& nend){
auto msuffix = max_suffix(nstart, nend - nstart, std::less{}); auto msuffix = max_suffix(nstart, nend - nstart, std::less{});
auto msuffix_rev = max_suffix(nstart, nend - nstart, std::greater{}); auto msuffix_rev = max_suffix(nstart, nend - nstart, std::greater{});
if(msuffix.first < msuffix_rev.first){ if(msuffix.first < msuffix_rev.first){
@ -91,8 +91,8 @@ namespace rexy::detail{
return msuffix; return msuffix;
} }
template<class Iter> template<class Iter>
constexpr bool iter_compare(const Iter& left, const Iter& right, size_t length){ constexpr bool iter_compare(const Iter& left, const Iter& right, std::size_t length){
for(size_t i = 0;i < length;++i){ for(std::size_t i = 0;i < length;++i){
if(left[i] != right[i]) if(left[i] != right[i])
return false; return false;
} }

View File

@ -19,7 +19,7 @@
#ifndef REXY_DETAIL_FORMAT_FORMATTER_HPP #ifndef REXY_DETAIL_FORMAT_FORMATTER_HPP
#define REXY_DETAIL_FORMAT_FORMATTER_HPP #define REXY_DETAIL_FORMAT_FORMATTER_HPP
#include <cstddef> //size_t, nullptr_t #include <cstddef> //std::size_t, nullptr_t
#include <variant> //monostate #include <variant> //monostate
#include <locale> //locale #include <locale> //locale
#include <type_traits> //remove_cvref #include <type_traits> //remove_cvref

View File

@ -54,9 +54,9 @@ namespace rexy{
void reset(FILE* fp = nullptr)noexcept; void reset(FILE* fp = nullptr)noexcept;
FILE* release(void)noexcept; FILE* release(void)noexcept;
size_t length(void)noexcept; std::size_t length(void)noexcept;
size_t position(void)const noexcept; std::size_t position(void)const noexcept;
void rewind(size_t pos = 0)noexcept; void rewind(std::size_t pos = 0)noexcept;
operator FILE*(void)noexcept; operator FILE*(void)noexcept;
operator const FILE*(void)const noexcept; operator const FILE*(void)const noexcept;
@ -64,13 +64,13 @@ namespace rexy{
const FILE* get(void)const noexcept; const FILE* get(void)const noexcept;
operator bool(void)const noexcept; operator bool(void)const noexcept;
size_t read(char* dest, size_t bytes)noexcept; std::size_t read(char* dest, std::size_t bytes)noexcept;
rexy::string read(size_t bytes)noexcept; rexy::string read(std::size_t bytes)noexcept;
rexy::string readln(size_t max = 0)noexcept; rexy::string readln(std::size_t max = 0)noexcept;
rexy::buffer<char> read_bin(size_t bytes)noexcept(std::is_nothrow_constructible<rexy::buffer<char>, char*, 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);
size_t write(const char* c, size_t bytes)noexcept; std::size_t write(const char* c, std::size_t bytes)noexcept;
size_t write(const rexy::string_base<char>& s)noexcept; std::size_t write(const rexy::string_base<char>& s)noexcept;
}; };
} }

View File

@ -26,11 +26,11 @@ namespace rexy{
template<class T> template<class T>
struct hash{ struct hash{
constexpr size_t operator()(const T& t, size_t salt = 0)const noexcept{ constexpr std::size_t operator()(const T& t, std::size_t salt = 0)const noexcept{
constexpr size_t bytes = sizeof(size_t); constexpr std::size_t bytes = sizeof(std::size_t);
size_t val = static_cast<size_t>(t); std::size_t val = static_cast<std::size_t>(t);
size_t hash = 5381 + salt; //magic hash number std::size_t hash = 5381 + salt; //magic hash number
for(size_t i = 0;i < bytes;++i){ for(std::size_t i = 0;i < bytes;++i){
unsigned char c = static_cast<unsigned char>(val >> (i * CHAR_BIT)); unsigned char c = static_cast<unsigned char>(val >> (i * CHAR_BIT));
hash = ((hash << 5) + hash) ^ c; hash = ((hash << 5) + hash) ^ c;
} }

View File

@ -20,7 +20,7 @@
#define REXY_MPMC_QUEUE_HPP #define REXY_MPMC_QUEUE_HPP
#include <vector> //vector (duh) #include <vector> //vector (duh)
#include <cstdlib> //size_t #include <cstddef> //size_t
#include <atomic> //atomic (duh) #include <atomic> //atomic (duh)
#include "rexy.hpp" #include "rexy.hpp"
@ -43,7 +43,7 @@ namespace rexy{
{ {
public: public:
using value_type = T; using value_type = T;
using size_type = size_t; using size_type = std::size_t;
using pointer = value_type*; using pointer = value_type*;
using const_pointer = const value_type*; using const_pointer = const value_type*;
using reference = value_type&; using reference = value_type&;
@ -55,13 +55,13 @@ namespace rexy{
//libc++ bug //libc++ bug
// https://bugs.llvm.org/show_bug.cgi?id=41423 // https://bugs.llvm.org/show_bug.cgi?id=41423
#if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION >= 12000 #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION >= 12000
static constexpr size_t cacheline_size = std::hardware_destructive_interference_size; static constexpr std::size_t cacheline_size = std::hardware_destructive_interference_size;
#else #else
static constexpr size_t cacheline_size = 64; static constexpr std::size_t cacheline_size = 64;
#endif #endif
#else #else
//Best guess //Best guess
static constexpr size_t cacheline_size = 64; static constexpr std::size_t cacheline_size = 64;
#endif #endif
class slot class slot

View File

@ -21,7 +21,7 @@
#include <type_traits> //is_same, integral_contant, enable_if, etc #include <type_traits> //is_same, integral_contant, enable_if, etc
#include <utility> //forward #include <utility> //forward
#include <cstddef> //size_t,ptrdiff #include <cstddef> //std::size_t,ptrdiff
#include <cstring> //strlen #include <cstring> //strlen
#include <climits> //CHAR_BIT #include <climits> //CHAR_BIT
#include <iterator> //reverse_iterator #include <iterator> //reverse_iterator
@ -54,7 +54,7 @@ namespace rexy{
{ {
public: public:
using value_type = Char; using value_type = Char;
using size_type = size_t; using size_type = std::size_t;
using difference_type = ptrdiff_t; using difference_type = ptrdiff_t;
using pointer = value_type*; using pointer = value_type*;
using const_pointer = const value_type*; using const_pointer = const value_type*;

View File

@ -26,9 +26,9 @@ namespace rexy{
//jenkns one at a time hash //jenkns one at a time hash
template<class Str> template<class Str>
struct string_hash{ struct string_hash{
constexpr size_t operator()(const Str& s, size_t salt = 0)const noexcept{ constexpr std::size_t operator()(const Str& s, std::size_t salt = 0)const noexcept{
size_t hash = salt; std::size_t hash = salt;
for(size_t i = 0;i < s.length();++i){ for(std::size_t i = 0;i < s.length();++i){
hash += s[i]; hash += s[i];
hash += (hash << 10); hash += (hash << 10);
hash += (hash >> 6); hash += (hash >> 6);

View File

@ -19,7 +19,7 @@
#ifndef REXY_STRING_VIEW_HPP #ifndef REXY_STRING_VIEW_HPP
#define REXY_STRING_VIEW_HPP #define REXY_STRING_VIEW_HPP
#include <cstddef> //size_t, ptrdiff_t #include <cstddef> //std::size_t, ptrdiff_t
#include <iterator> //reverse_iterator #include <iterator> //reverse_iterator
#include "compat/standard.hpp" #include "compat/standard.hpp"
@ -35,7 +35,7 @@ namespace rexy{
{ {
public: public:
using value_type = Char; using value_type = Char;
using size_type = size_t; using size_type = std::size_t;
using difference_type = ptrdiff_t; using difference_type = ptrdiff_t;
using pointer = value_type*; using pointer = value_type*;
using const_pointer = const value_type*; using const_pointer = const value_type*;
@ -132,7 +132,7 @@ namespace rexy{
template<class T> template<class T>
basic_string_view(const T*) -> basic_string_view<T>; basic_string_view(const T*) -> basic_string_view<T>;
template<class T> template<class T>
basic_string_view(const T*, size_t) -> basic_string_view<T>; basic_string_view(const T*, std::size_t) -> basic_string_view<T>;
using string_view = basic_string_view<char>; using string_view = basic_string_view<char>;
using wstring_view = basic_string_view<wchar_t>; using wstring_view = basic_string_view<wchar_t>;
@ -146,16 +146,16 @@ namespace rexy{
inline namespace str_literals{ inline namespace str_literals{
constexpr inline rexy::basic_string_view<char> operator"" _sv(const char* str, size_t len)noexcept{ constexpr inline rexy::basic_string_view<char> operator"" _sv(const char* str, std::size_t len)noexcept{
return rexy::basic_string_view(str, len); return rexy::basic_string_view(str, len);
} }
constexpr inline rexy::basic_string_view<wchar_t> operator"" _sv(const wchar_t* str, size_t len)noexcept{ constexpr inline rexy::basic_string_view<wchar_t> operator"" _sv(const wchar_t* str, std::size_t len)noexcept{
return rexy::basic_string_view(str, len); return rexy::basic_string_view(str, len);
} }
constexpr inline rexy::basic_string_view<char16_t> operator"" _sv(const char16_t* str, size_t len)noexcept{ constexpr inline rexy::basic_string_view<char16_t> operator"" _sv(const char16_t* str, std::size_t len)noexcept{
return rexy::basic_string_view(str, len); return rexy::basic_string_view(str, len);
} }
constexpr inline rexy::basic_string_view<char32_t> operator"" _sv(const char32_t* str, size_t len)noexcept{ constexpr inline rexy::basic_string_view<char32_t> operator"" _sv(const char32_t* str, std::size_t len)noexcept{
return rexy::basic_string_view(str, len); return rexy::basic_string_view(str, len);
} }

View File

@ -20,7 +20,7 @@
#define REXY_UTILITY_HPP #define REXY_UTILITY_HPP
#include <utility> //forward, move #include <utility> //forward, move
#include <cstdlib> //size_t #include <cstddef> //size_t
#include <type_traits> #include <type_traits>
#include <cstring> //strlen, strcmp, memcpy #include <cstring> //strlen, strcmp, memcpy
#include <cwchar> //wcslen #include <cwchar> //wcslen
@ -50,7 +50,7 @@ namespace rexy{
} }
return start2; return start2;
} }
template<class T, size_t N> template<class T, std::size_t N>
constexpr void swap(T (&l)[N], T (&r)[N]) constexpr void swap(T (&l)[N], T (&r)[N])
noexcept(noexcept(swap(*l, *r))) noexcept(noexcept(swap(*l, *r)))
{ {
@ -94,7 +94,7 @@ namespace rexy{
#ifdef REXY_if_consteval #ifdef REXY_if_consteval
template<class T> template<class T>
constexpr size_t strlen(const T* c)noexcept{ constexpr std::size_t strlen(const T* c)noexcept{
return std::char_traits<T>::length(c); return std::char_traits<T>::length(c);
} }
template<class T> template<class T>
@ -138,13 +138,13 @@ namespace rexy{
for(;cmp(*l, *r) && *l;++l, ++r); for(;cmp(*l, *r) && *l;++l, ++r);
return *l - *r; return *l - *r;
} }
constexpr void memcpy(void* l, const void* r, size_t n){ constexpr void memcpy(void* l, const void* r, std::size_t n){
REXY_if_consteval{ REXY_if_consteval{
std::memcpy(l, r, n); std::memcpy(l, r, n);
}else{ }else{
char* ld = static_cast<char*>(l); char* ld = static_cast<char*>(l);
const char* rd = static_cast<const char*>(r); const char* rd = static_cast<const char*>(r);
for(size_t i = 0;i < n;++i){ for(std::size_t i = 0;i < n;++i){
ld[i] = rd[i]; ld[i] = rd[i];
} }
} }
@ -152,8 +152,8 @@ namespace rexy{
} }
#else // REXY_if_consteval #else // REXY_if_consteval
template<class T> template<class T>
constexpr size_t strlen(const T* c)noexcept{ constexpr std::size_t strlen(const T* c)noexcept{
size_t i = 0; std::size_t i = 0;
for(;c[i];++i); for(;c[i];++i);
return i; return i;
} }
@ -172,10 +172,10 @@ namespace rexy{
for(std::size_t i = 0;*l == *r && *l && i < max;++i, ++l, ++r); for(std::size_t i = 0;*l == *r && *l && i < max;++i, ++l, ++r);
return *l - *r; return *l - *r;
} }
constexpr void memcpy(void* l, const void* r, size_t n){ constexpr void memcpy(void* l, const void* r, std::size_t n){
char* ld = static_cast<char*>(l); char* ld = static_cast<char*>(l);
const char* rd = static_cast<const char*>(r); const char* rd = static_cast<const char*>(r);
for(size_t i = 0;i < n;++i){ for(std::size_t i = 0;i < n;++i){
ld[i] = rd[i]; ld[i] = rd[i];
} }
} }

View File

@ -39,20 +39,20 @@ namespace rexy{
FILE* filerd::release(void)noexcept{ FILE* filerd::release(void)noexcept{
return std::exchange(m_fp, nullptr); return std::exchange(m_fp, nullptr);
} }
size_t filerd::length(void)noexcept{ std::size_t filerd::length(void)noexcept{
if(!m_fp) if(!m_fp)
return 0; return 0;
size_t tmp, ret; std::size_t tmp, ret;
tmp = ftell(m_fp); tmp = ftell(m_fp);
fseek(m_fp, 0, SEEK_END); fseek(m_fp, 0, SEEK_END);
ret = ftell(m_fp); ret = ftell(m_fp);
fseek(m_fp, tmp, SEEK_SET); fseek(m_fp, tmp, SEEK_SET);
return ret; return ret;
} }
size_t filerd::position(void)const noexcept{ std::size_t filerd::position(void)const noexcept{
return ftell(m_fp); return ftell(m_fp);
} }
void filerd::rewind(size_t pos)noexcept{ void filerd::rewind(std::size_t pos)noexcept{
fseek(m_fp, pos, SEEK_SET); fseek(m_fp, pos, SEEK_SET);
} }
@ -72,20 +72,20 @@ namespace rexy{
return m_fp; return m_fp;
} }
size_t filerd::read(char* dest, size_t bytes)noexcept{ std::size_t filerd::read(char* dest, std::size_t bytes)noexcept{
return fread(dest, 1, bytes, m_fp); return fread(dest, 1, bytes, m_fp);
} }
rexy::string filerd::read(size_t bytes)noexcept{ rexy::string filerd::read(std::size_t bytes)noexcept{
rexy::string ret; rexy::string ret;
char* tmp = ret.allocator().allocate(bytes); char* tmp = ret.allocator().allocate(bytes);
size_t written = read(tmp, bytes); std::size_t written = read(tmp, bytes);
ret.reset(tmp, written); ret.reset(tmp, written);
return ret; return ret;
} }
rexy::string filerd::readln(size_t max)noexcept{ rexy::string filerd::readln(std::size_t max)noexcept{
rexy::string ret; rexy::string ret;
int c; int c;
size_t count = 0; std::size_t count = 0;
for(c = fgetc(m_fp);c != EOF && c != '\n';c = fgetc(m_fp)){ for(c = fgetc(m_fp);c != EOF && c != '\n';c = fgetc(m_fp)){
char ch = c; char ch = c;
ret.append(&ch, 1); ret.append(&ch, 1);
@ -94,18 +94,18 @@ namespace rexy{
} }
return ret; return ret;
} }
rexy::buffer<char> filerd::read_bin(size_t bytes) rexy::buffer<char> filerd::read_bin(std::size_t bytes)
noexcept(std::is_nothrow_constructible<rexy::buffer<char>, char*, size_t>::value) noexcept(std::is_nothrow_constructible<rexy::buffer<char>, char*, std::size_t>::value)
{ {
rexy::buffer<char> ret{bytes}; rexy::buffer<char> ret{bytes};
size_t written = read(ret.data(), bytes); std::size_t written = read(ret.data(), bytes);
ret.set_size(written); ret.set_size(written);
return ret; return ret;
} }
size_t filerd::write(const char* c, 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 fwrite(c, 1, bytes, m_fp);
} }
size_t filerd::write(const rexy::string_base<char>& c)noexcept{ std::size_t filerd::write(const rexy::string_base<char>& c)noexcept{
return write(c.data(), c.length()); return write(c.data(), c.length());
} }

View File

@ -52,7 +52,7 @@ namespace rexy{
m_valid(true) m_valid(true)
{ {
m_ctor_lock.unlock(); m_ctor_lock.unlock();
for(size_t i = 0;i < other.m_workers.size();++i){ for(std::size_t i = 0;i < other.m_workers.size();++i){
m_workers.emplace_back(&threadpool::worker_loop, this); m_workers.emplace_back(&threadpool::worker_loop, this);
} }
m_qcv.notify_all(); m_qcv.notify_all();

View File

@ -90,7 +90,7 @@ void check_short_construction(){
} }
void check_long_construction(){ void check_long_construction(){
const char* data = "this is a really long string that should ensure that it makes a dynamic allocation even if it has a big buffer."; const char* data = "this is a really long string that should ensure that it makes a dynamic allocation even if it has a big buffer.";
size_t len = strlen(data); std::size_t len = strlen(data);
test_str str1(data); test_str str1(data);
if(str1.length() != len) if(str1.length() != len)
error("long constructed string should be length() == strlen(data)\n"); error("long constructed string should be length() == strlen(data)\n");
@ -171,7 +171,7 @@ void check_long_assignment(){
const char* startdata1 = "this is another really long string that should ensure that it makes some sort of dyn alloc for big buf"; const char* startdata1 = "this is another really long string that should ensure that it makes some sort of dyn alloc for big buf";
const char* startdata2 = "zy"; const char* startdata2 = "zy";
const char* data = "this is a really long string that should ensure that it makes a dynamic allocation even if it has a big buffer."; const char* data = "this is a really long string that should ensure that it makes a dynamic allocation even if it has a big buffer.";
size_t len = strlen(data); std::size_t len = strlen(data);
test_str str1(startdata1); test_str str1(startdata1);
str1 = data; str1 = data;
if(str1.length() != len) if(str1.length() != len)