Skip to content

Commit

Permalink
Merge pull request cppfastio#2 from trcrsired/master
Browse files Browse the repository at this point in the history
  • Loading branch information
backyardofysh committed Jun 26, 2023
2 parents a04e47a + f41edec commit 52d97d5
Show file tree
Hide file tree
Showing 61 changed files with 960 additions and 3,202 deletions.
4 changes: 0 additions & 4 deletions include/fast_io_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,6 @@
#include"fast_io_core_impl/char_category.h"


#include"fast_io_core_impl/overflow.h"


#if __cpp_lib_three_way_comparison >= 201907L
#include"fast_io_core_impl/compare.h"
#endif
Expand All @@ -74,7 +71,6 @@
#include"fast_io_core_impl/mode.h"
#include"fast_io_core_impl/perms.h"
#include"fast_io_core_impl/operations/impl.h"
#include"fast_io_core_impl/igenerator.h"

// This should provide an option macro to disable any generation for table in freestanding environments.
#include"fast_io_core_impl/integers/integer.h"
Expand Down
50 changes: 0 additions & 50 deletions include/fast_io_core_impl/concepts/decorator.h

This file was deleted.

168 changes: 0 additions & 168 deletions include/fast_io_core_impl/concepts/details.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,154 +3,6 @@
namespace fast_io::details
{

template<typename T>
concept stream_char_type_requirement = requires()
{
typename std::remove_cvref_t<T>::char_type;
};

template<typename T>
concept input_stream_impl =
(stream_char_type_requirement<T>||
(requires()
{
typename std::remove_cvref_t<T>::input_char_type;
})
)&&requires(T&& in,typename std::remove_cvref_t<T>::char_type* b)
{
read(in,b,b);
};

template<typename T>
concept output_stream_impl = (stream_char_type_requirement<T>||
(requires()
{
typename std::remove_cvref_t<T>::output_char_type;
})
)&&requires(T&& out,typename std::remove_cvref_t<T>::char_type const* b)
{
write(out,b,b);
};

template<typename T>
concept mutex_stream_impl = requires(T&& t)
{
t.lock();
t.unlock();
t.unlocked_handle();
};

template<typename T>
concept random_access_stream_impl = requires(T&& t)
{
seek(t,5);
};

template<typename T>
concept buffer_input_stream_impl = requires(T&& in)
{
ibuffer_begin(in);
ibuffer_set_curr(in,ibuffer_curr(in));
ibuffer_end(in);
{ibuffer_underflow(in)}->std::convertible_to<bool>;
};

template<typename T>
concept contiguous_input_stream_impl = requires(T&& in)
{
ibuffer_underflow_never(in);
};

template<typename T>
concept contiguous_output_stream_impl = requires(T&& out)
{
obuffer_overflow_never(out);
};

template<typename T>
concept refill_buffer_input_stream_impl = requires(T&& in)
{
{irefill(in)}->std::convertible_to<bool>;
};

template<typename T>
concept buffer_output_stream_impl = requires(T&& out,typename std::remove_cvref_t<T>::char_type ch)
{
obuffer_begin(out);
obuffer_end(out);
obuffer_set_curr(out,obuffer_curr(out));
obuffer_overflow(out,ch);
};

template<typename T>
concept constant_buffer_output_stream_impl = requires(T&& out)
{
{obuffer_constant_size(io_reserve_type<typename std::remove_cvref_t<T>::char_type,std::remove_cvref_t<decltype(out)>>)}->std::same_as<std::size_t>;
obuffer_constant_flush_prepare(out);
};

template<typename T>
concept flush_output_stream_impl = requires(T&& out)
{
flush(out);
};

template<typename T>
concept fill_nc_output_stream_impl = requires(T&& out,std::size_t n,typename std::remove_cvref_t<T>::char_type ch)
{
fill_nc_define(out,n,ch);
};

template<typename T>
concept dynamic_output_stream_impl = requires(T&& out,std::size_t size,typename std::remove_cvref_t<T>::char_type* ptr)
{
oreserve(out,size);
oshrink_to_fit(out);
};

template<typename T>
concept zero_copy_input_stream_impl = requires(T&& in)
{
zero_copy_in_handle(in);
};

template<typename T>
concept zero_copy_output_stream_impl = requires(T&& out)
{
zero_copy_out_handle(out);
};

template<typename T>
concept redirect_stream_impl = requires(T&& h)
{
redirect_handle(h);
};

template<typename T>
concept status_stream_impl = requires(T&& stm)
{
typename std::remove_cvref_t<T>::status_type;
};

template<typename T>
concept scatter_input_stream_impl = requires(T&& in,io_scatters_t sp)
{
scatter_read(in,sp);
};

template<typename T>
concept scatter_output_stream_impl = requires(T&& out,io_scatters_t sp)
{
scatter_write(out,sp);
};

template<typename T>
concept scatter_constant_output_stream_impl = requires(T&& out,io_scatter_t const* sp)
{
scatter_constant_write<1>(out,sp);
};


template<std::integral ch_type>
struct dummy_buffer_output_stream
{
Expand Down Expand Up @@ -232,24 +84,4 @@ inline constexpr void read_all_overflow_define(dummy_buffer_input_stream<char_ty
{
}

#if 0

template<typename T>
concept async_input_stream64_impl = requires(T in,typename T::char_type* first,typename T::char_type* last,std::int_least64_t offset)
{
async_read_define64(in,first,last,offset,[](typename T::char_type*,::std::errc ec)
{
});
};

template<typename T>
concept async_input_stream64_impl = requires(T in,typename T::char_type* first,typename T::char_type* last,std::int_least64_t offset)
{
async_write_define64(in,first,last,offset,[](typename T::char_type*,::std::errc ec)
{
});
};

#endif

}
6 changes: 0 additions & 6 deletions include/fast_io_core_impl/concepts/impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,7 @@

#include"type.h"
#include"parse_code.h"
#include"manipulators.h"
#include"outputstream.h"
#include"inputstream.h"
#include"inputoutputstream.h"
#include"details.h"
#include"stream.h"
#include"operation_details.h"
#include"operation.h"
#include"decorator.h"
#include"strlike.h"
30 changes: 0 additions & 30 deletions include/fast_io_core_impl/concepts/inputoutputstream.h

This file was deleted.

Loading

0 comments on commit 52d97d5

Please sign in to comment.