5.0.0
Freundlich's C++ toolkit
|
fcpptmetal
fcppt::metal::print
now works on arbitrary char types. std::result_of_t
has been replaced with std::invoke_result_t
. Deprecated member typedefs of std::allocator
have been replaced with std::allocator_traits
.
std::string
. The function fcppt::enum_::to_string in particular returns a std::string_view
. fcpptmetal
fcppt::metal::sequence_to_string
now returns a std::string
. std::system_error
internally instead of the potentially not thread-safe std::strerror
function. std::string
. FCPPT_ASSERT_THROW
, FCPPT_ASSERT_THROW_MESSAGE
, FCPPT_ASSERT_POST
and FCPPT_ASSERT_POST_MESSAGE
. fcppt::cast::dynamic_cross_exn
and fcppt::cast::dynamic_exn
. fcppt::container::bitfield::enum_object
. fcppt::enum_::from_int_exn
. fcppt::time::ctime
. fcppt::variant::get_exn
. fcppt::variant::types_string
. New library. The difference between std::array
is that fcppt::array::object does not allow default construction.
fcpptmetal
fcppt::metal::is_invocable
. Added documentation.
noexcept
and constexpr
. New library. The difference between std::tuple
is that fcppt::tuple::object does not allow default construction.
fcpptcontainerarray
This has been removed in favor of fcppt.array.
fcpptcontainertuple
This has been removed in favor of fcppt.tuple.
fcppt::homogenous_pair
. fcppt::type_traits::is_std_array
. fcppt::type_traits::is_std_tuple
. fcppt::container::tuple::map
. fcpptcontainerarray
fcppt::container::array::from_range
. fcpptcontainertuple
fcppt::container::tuple::apply
. fcppt::container::tuple::from_array
. fcppt::container::tuple::init
. fcpptmetal
fcppt::metal::function_args
. fcppt::metal::contains
, which returns a boolean instead of a metal::number
. std::tuple
. =std::locale()
parameters. fcppt::extract_from_string_locale
, fcppt::from_std_string_locale, fcppt::from_std_wstring_locale fcppt::narrow_locale, fcppt::output_to_string_locale, fcppt::output_to_std_string_locale, fcppt::output_to_std_wstring_locale, fcppt::to_std_string_locale, fcppt::to_std_wstring_locale and fcppt::widen_locale. fcpptmetal
fcppt::metal::set::contains
now returns a boolean instead of a metal::number
. =std::locale()
parameter from fcppt::extract_from_string, fcppt::from_std_string, fcppt::from_std_wstring fcppt::narrow, fcppt::output_to_string, fcppt::output_to_std_string, fcppt::output_to_std_wstring, fcppt::to_std_string, fcppt::to_std_wstring and fcppt::widen. type
from fcppt::type_traits::function_result
. fcppt::cast::safe
. fcpptcontainertuple
fcppt::container::tuple::type_at
. Use std::tuple_element
. fcppt::type_traits::constructible_from
. Use std::is_constructible
. fcppt::brigand::implication
to fcppt::type_traits::implication. fcppt::brigand::integral_cast
to fcppt::type_traits::integral_cast. Moved fcppt::brigand::ceil_div
to fcppt::math::ceil_div_static.
fcppt::record::variadic
and added fcppt::record::from_list. fcppt::variant::variadic
and added fcppt::variant::from_list. std::filesystem
. fcppt::range::begin
and fcppt::range::end
that call begin/end via ADL. fcppt::filesystem::create_directory_error
. Removed the fcpptsystem library.
Fix fcppt::unique_ptr assignment.
fcpptcontainerarray
fcppt::container::array::append
and fcppt::container::array::join
. operator<<
. operator<<
for fcppt::enum_::array. fcppt::container::tree::output
to operator<<
. fcppt::options::other_error
were moved to fcppt::options::parse_error. fcppt::options::combine_errors
to detail. Output operators now recurse into Catch's output code instead of using operator<<
.
fcppt::container::contains
. fcppt::record::enable_vararg_ctor
. fcppt::either::fold_error
to fcppt::either::sequence_error. fcppt::catch_::defer
. fcpptcontainertuple
fcppt::container::tuple::to_varargs
. Use std::apply
. FCPPT_PP_WARN_UNUSED_RESULT
. fcppt now uses C++-17
.
fcpptbrigand
fcppt::brigand::is_set
. fcppt::brigand::unique
. std::optional
in its implementation. Now uses std::variant
in its implementation. This change makes the constructor of fcppt::variant::object stricter, since it now uses std::is_constructible
. For example, an rvalue of a type that is not movable cannot be used to construct a variant.
fcppt/variant/less.hpp
, fcppt/variant/equal.hpp
and fcppt/variant/not_equal.hpp
. into fcppt/variant/comparison.hpp
. constexpr
. external_begin.h(pp)
and external_end.h(pp)
includes can now overlap. fcppt::log::_
to fcppt::log::out. FCPPT_NONASSIGNABLE
. fcpptcontainertuple
fcppt::container::tuple::move_element
. fcppt::container::tuple::type_at
. fcppt::container::tuple::types_of
. fcppt::options::indent
and added indentation to various parser outputs. fcppt::options::combine_errors
and use it in fcppt::options::sum. std::array
, you have to include fcppt/algorithm/map_array.hpp
. fcppt::algorithm::join
to fcppt::container::join. fcppt::algorithm::key_set
to fcppt::container::key_set. fcppt::algorithm::set_difference
to fcppt::container::set_difference. fcppt::algorithm::set_intersection
to fcppt::container::set_intersection. fcppt::algorithm::set_union
to fcppt::container::set_union. std::string
, fcppt::algorithm::append
. fcppt::filesystem::file_to_string
. fcppt::filesystem::size_to_size_t
. fcppt::output_to_std_string_convert
. fcppt::variant::apply_unary
, fcppt::variant::apply_binary
and fcppt::variant::apply_ternary
. Updated catch includes to use catch2/catch.hpp
.
std::set
instead of std::unordered_set
so that set_union
actually works. boost.test
with Catch2
. This means that in order to build the tests (-D ENABLE_TEST=ON
), Catch2 is now required. fcpptcontainerarray
fcppt::container::array::push_back
. fcppt::container::array::apply
. fcpptcontainertuple
fcppt::container::tuple::push_back
. operator==
to fcppt::iterator::range
. fcppt::range::size
. fcppt::output_to_std_string_convert
. fcppt::type_traits::remove_cv_ref_t
. fcppt::algorithm::array_map
, fcppt::algorithm::array_init
, fcppt::algorithm::array_init_const
, fcppt::algorithm::array_init_move
, fcppt::algorithm::array_push_back
and fcppt::container::make_array
to fcpptcontainerarray. fcppt::algorithm::vararg_map
to fcppt::container::tuple::vararg_map
. fcpptassign
fcppt::assign::make_container
to fcppt::container::make. fcppt::container::untuple
to fcppt::container::tuple::to_varargs
. fcpptcontainerarray
fcppt::container::array::map
no longer uses an explicit result type. fcppt::math::dim::construct
to fcppt::math::dim::push_back. fcppt::math::vector::construct
to fcppt::math::vector::push_back. fcppt::insert_to*_string
to fcppt::output_to*_string
. Removed fcppt.mpl
.
fcppt::algorithm::array_binary_map
. This has been replaced by fcppt::container::array::apply
. ENABLE_BOOST
CMake flag. It defaults to ON
if Boost is found. To build fcppt_filesystem
, fcppt_system
or fcppt's tests, Boost is still required. Furthermore, all Boost-specific functionality has been moved to fcppt_boost
. To replace boost::mpl
, Brigand
has been added as a dependency, which can be obtained from here. It is a small, header-only C++11 library that has no dependencies itself. -Weffc++
warning. Unfortunately, this warning has become even more broken in gcc-8
. std::array
in fcppt::algorithm::map. fcppt::algorithm::array_map
. fcpptbrigand
New library for brigand utility functions.
New library that is a simple replacement for boost::intrusive::list
. It only supports movable types. Furthermore, an element must be initialized with the list it is going to be a member of.
New library that provides a base class to implement iterators from and an iterator range.
New library that implements some utility functions for ranges.
fcppt::type_traits::function_result
. fcppt::type_traits::is_std_tuple
. boost::format
from fcppt::log::format::inserter
. operator/
now return optionals. operator/
now return optionals. fcppt::range_hash
to fcppt::range::hash. make_strong_typedef.hpp
from strong_typedef.hpp
. fcppt::algorithm::levenshtein
and fcppt::algorithm::shortest_levenshtein
, fcppt::cast::promote
. fcppt::math::to_array_type_tpl
. operator%
, operator%=
and operator/=
. operator+
and operator-
that took a scalar. operator+
. operator/=
and operator/
. operator%
, operator%=
and operator/=
. operator+
and operator-
that took a scalar. operator+
. fcpptmpl
This library is in the process of being replaced by fcpptbrigand>
.
fcppt::record::disjoint_product_tpl
, fcppt::record::element_map_tpl
, fcppt::record::element_to_label_tpl
, fcppt::record::element_to_type_tpl
, fcppt::record::element_vector_tpl
, fcppt::record::label_set_tpl
, fcppt::record::label_value_type_tpl
, operator/
, operator/=
, operator%
and operator%=
. operator+
. operator<<
, operator<<=
, operator>>
and operator>>=
. fcppt::type_traits::is_iterable
, fcppt::type_traits::has_iterator
and fcppt::type_traits::has_const_iterator
. FCPPT_TYPE_TRAITS_GENERATE_HAS_TYPE
and FCPPT_TYPE_TRAITS_GENERATE_HAS_MEMBER_FUNCTION
. fcppt::type_traits::is_iterator
. fcppt::type_traits::function_pointer_to_reference
. fcppt::type_traits::is_input_iterator
, fcppt::type_traits::is_output_iterator
, fcppt::type_traits::is_forward_iterator
, fcppt::type_traits::bidirectional_iterator
and fcppt::type_traits::is_random_access_iterator
. fcppt::variant::types_of_tpl
. fcppt::algorithm::equal
. fcppt::algorithm::append
now also works on rvalues. fcppt::algorithm::join
to join maps and sets. This sub-library adds fcppt::container::buffer::object and utility functions which can be used to provide a buffer to external functions that write into raw memory. The buffer contains a read and a write area.
fcppt::either::fold_error
and fcppt::either::error_from_optional. fcppt::enum_::names
and fcppt::enum_::names_impl
. fcppt::filesystem::create_directory_error
and fcppt::filesystem::create_directories_recursive. fcppt::filesystem::size_to_size_t
. 4 x 4
. fcppt/options/pretty_type_enum.hpp
that outputs all possible enumerators via fcppt::enum_::names. fcppt::add_reference
. std::hash
specialization. fcpptsystem
New library that wraps some functionality from boost.system
.
main
function to support unicode arguments in Windows. operator==
, operator!=
and operator<<
for fcppt::unit. CMake
find_package(fcppt)
now adds fcppt's module path to CMAKE_MODULE_PATH
. GNUInstallDirs.cmake
instead of its own variables. fcppt::container::raw_vector
to fcppt::container::raw_vector::object. fcppt/container/raw_vector/comparison.hpp
. std::vector
. operator[]
of fcppt::container::grid::object to fcppt::container::grid::object::get_unsafe. Moved most functionality that is related to contiguous enums to the fcppt::enum_ namespace.
fcppt::filesystem::file_to_string
now returns fcppt::optional_string for most errors. std::basic_ifstream
, std::basic_ofstream
and std::basic_fstream
instead of the boost variants. fcppt::math::at_c
into fcppt::math::vector::at, fcppt::math::dim::at and fcppt::math::matrix::at_r. operator[]
of fcppt::math::dim::object to fcppt::math::dim::object::get_unsafe. operator[]
of fcppt::math::matrix::object to fcppt::math::matrix::object::get_unsafe. fcppt::math::matrix::at_c
to fcppt::math::matrix::at_r_c. fcppt::math::matrix::delete_row_and_column_static
to fcppt::math::matrix::delete_row_and_column. std::array
. operator[]
of fcppt::math::vector::object to fcppt::math::vector::object::get_unsafe. fcppt::options::custom_pretty_type
to fcppt::options::pretty_type_impl. fcppt/shared_ptr_output.hpp
. char
. fcppt::container::is_std_vector
. fcppt::container::is_raw_vector
. std::vector
. fcppt::filesystem::exception
. fcppt::filesystem::create_directories_recursive_exn
and fcppt::filesystem::create_directory_exn
. fcppt::filesystem::is_executable
which is covered by boost.filesystem
. fcppt::math::matrix::delete_row_and_column
. std::mbstate_t
when doing character conversions. fcpptmpl
fcppt::mpl::sequence_to_string
. fcppt::variant::types_of_tpl
. fcppt::variant::apply_unary
, fcppt::variant::apply_binary
and fcppt::variant::apply_ternary
. fcppt::variant::invalid_get
. fcppt::variant::types_string
. operator<<
and operator>>
for fcppt::log::level. fcppt::math::to_array_type_tpl
, fcppt::math::from_array and fcppt::math::to_array. fcpptmpl
fcppt::mpl::set_intersection
. fcppt::mpl::set_union
. fcppt::mpl::set_difference
. fcppt::mpl::set_symmetric_difference
. New library for parsing command-line options, similar to Haskell's optparse-applicative.
fcppt::record::label_set_tpl
. fcppt::record::disjoint_product_tpl
. fcppt::record::label_value_type_tpl
. fcppt::record::element_map_tpl
. ==
and !=
comparison for equivalent records. fcppt::record::element_vector_tpl
. fcppt::type_traits::constructible_from
. fcppt::math::static_storage
, fcppt::math::matrix::static_storage
, fcppt::math::map
and fcppt::math::binary_map
to detail. std::string
. CMake
CMAKE_CXX_STANDARD
to 14
in order to fix a bug with imported Qt targets. fcppt::math::generate_binary_vectors
to fcppt::math::vector::bit_strings. fcppt::cast::apply_fun
. fcppt::container::grid::object::{rbegin, rend, cbegin, cend, crbegin, crend}
. fcppt::container::grid::object::resize
and fcppt::container::grid::object::resize_init
. fcppt::container::grid::resize_preserve
and fcppt::container::grid::resize_preserve_init
. fcppt::math::step
. fcppt::math::bresenham
and fcppt::math::bresenham_thick
. fcppt::reference<T>::get_pointer
. CMake
FOLDER
properties on targets. fcppt_utils_set_target_folder
. fcppt_utils_add_example
. 4309
(overflow of a constant) in external headers. fcppt::container::untuple
. fcpptmpl
fcppt::mpl::index_of_iterator
. New library that implements generic records, whose elements are accessed by unique label types.
fcppt/variant/comparison.hpp
. CMake
fcppt_utils_add_test
now gets the test directory as argument as well. fcppt::algorithm::vararg_map
now uses a fusion sequence instead of an MPL sequence. CMake
Added interface libraries to fcppt's exported targets. For example, fcppt_core_interface
can be used to inherit the include paths and compile definitions from fcppt_core
without linking to the library.
INCLUDE_DIRS
and LINK_LIBS
to fcppt_utils_add_dummy_target
. fcppt_utils_is_path_prefix_of
. fcppt::algorithm::equal_range
. FCPPT_CONFIG_GNU_GCC_COMPILER
to distinguish gcc from clang. -Wundefined-var-template
for clang-3.9
in external headers. -Wsuggest-override
in external headers. -Wnull-dereference
for gcc-6
in external headers. fcpptmpl
fcppt::mpl::partial_sums
can now be specified. CMake
fcppt_utils_generate_config
. _fwd
headers to fcppt::io::istream, fcppt::io::ostream, fcppt::io::istringstream, fcppt::io::ostringstream and fcppt::io::stringstream. fcppt::io::ifstream
, fcppt::io::ofstream
and fcppt::io::fstream
to fcppt::filesystem::ifstream, fcppt::filesystem::ofstream and fcppt::filesystem::fstream. The logging library went through a major rewrite, with the purpose to remove global objects.
fcppt::container::bitfield::object_from_enum
to fcppt::container::bitfield::enum_object
and introduced an _fwd
header. fcppt::cast::static_downcast_ptr
. std::tuple
as a range. fcppt::cast::dynamic_cross_exn
. -Wfloat-conversion
and -Wsign-conversion
for gcc-6
in external headers again. -Wexpansion-to-defined
for clang-3.9
in external headers. fcppt::container::make_array
. New library that represents sum types of failure and success.
fcppt::cast_to_enum_exn
. fcpptmpl
fcppt::mpl::flatten
. fcppt::mpl::numeric_max
. fcppt::cast::try_dynamic
to fcppt::cast::dynamic, and renamed fcppt::cast::dynamic
to fcppt::cast::dynamic_exn
. fcppt::cast::dynamic_exn
only work on related types now. fcppt::cast_to_enum
now returns an optional. optional_bind_construct
to fcppt::optional::map. fcppt::reference_wrapper
to fcppt::reference. FCPPT_NONASSIGNABLE
now simply use =delete
instead of private:
fcppt::algorithm::shift_compare
. fcpptassign
fcppt::assign::make_container_opt
. fcppt::assign::make_map
. fcppt::cast::dynamic
for pointers. fcppt::io::read_exn
. fcppt::io::raw_container_source
. fcppt::math::mod_assign
. fcppt::extract_from_string_exn
. FCPPT_DECLTYPE_SINK
. fcppt::tag_value
. C++14
is now required. This probably excludes compilers older than gcc-5.2
and clang-3.4
. However, this also leads to several improvements:
matrix *
vector
, matrix * matrix
and so on, by checking for out-of-bounds accesses at compile-time. std::set<unique_ptr<int>>
given an int *
. fcppt::algorithm has been cleaned up substantially:
_exn
functions have been removed in favor of fcppt::optional_to_exception
. fcppt::algorithm::join
so it never returns a reference. CMake
NO_CODE
flag to fcppt_utils_add_test
which can be used to generate test cases that only consist of static asserts. value_type
instead of mapped_type
. -Wsign-compare
in external headers. fcppt::mpl::enum_range
and fcppt::mpl::enum_range_start_end
.fcppt::math::matrix::at_c
.
fcppt::math::matrix::delete_row_and_column_static
. fcppt/math/sphere/output.hpp
. fcpptmpl
fcppt::mpl::copy
. fcppt::mpl::for_each_break
. fcppt::mpl::integral_cast_tpl
. fcppt::optional_join
. fcppt::variant::variadic
. FCPPT_DECLTYPE_SINK
which returns decltype
of an expression and also uses it. This is useful in polymorphic lambdas where the argument is only used for its type. fcppt::tag_value
to extract a default-constructed value of a tag, which is useful for integral constants. fcppt::algorithm::array_fold_static
to fcppt::algorithm::array_init
, fcppt::algorithm::enum_array_fold_static
to fcppt::algorithm::enum_array_init
and fcppt::algorithm::array_init
to fcppt::algorithm::array_init_const
. operator bool
, swap
and clear
. fcppt/container/bitfield/comparison.hpp
. fcppt/container/bitfield/operators.hpp
. fcppt::enum_is_empty
. All enum ranges are now non-empty. std::integral_constant
. This greatly simplifies matching of template arguments. (pos,max)
representation instead of (pos,dim)
. This greatly simplifies a lot of algorithms on boxes. It also changes the interface slightly. fcppt::math::box::init
. null
of fcppt::math::box::object to fcppt::math::box::null. null
of fcppt::math::dim::object to fcppt::math::dim::null. identity
of fcppt::math::matrix::object to fcppt::math::matrix::identity. fcppt/math/sphere/comparison.hpp
. null
of fcppt::math::vector::object to fcppt::math::vector::null. fcppt::make_unique_ptr_fcppt
to fcppt::make_unique_ptr. CMake
BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0
which has not been used for a long time. fcppt::algorithm::array_fold
and fcppt::algorithm::enum_array_fold
which were only useful in C++11
. fcppt::container::find_exn
in favor of fcppt::optional_to_exception
. fcppt::container::grid::object::at
in favor of fcppt::container::grid::at_optional. fcppt::container::grid::is_square
which is covered by fcppt::math::dim::is_quadratic. fcppt::container::grid::iterator_position
which was unused and probably broken. at()
and empty()
from fcppt::container::enum_array
. begin
/end
, front
/ back
, etc, and so on. std::swap
. fcppt::math::vector::project
and fcppt::math::vector::orthogonalize
. fcppt::signal::scoped_connection
which was a typedef to fcppt::signal::auto_connection const
. fcppt::make_unique_ptr
which used to create a std::unique_ptr
. fcppt::time::parse_time
and fcppt::time::parse_date
. fcppt::variant::object::get_exn
. Use the free function fcppt::variant::get_exn
instead. fcppt::algorithm::index_of_enum_array
. fcppt::optional_deref
which returns the dereferenced contents of the optional iff it is not empty. This is often useful when optionals contain iterators or unique pointers. std::function
that cannot be null and has an explicit constructor. fcppt::log::format::function
. fcppt::log::format::optional_function
to make it clear where a function can be missing. fcppt::log::parameters
to only consist of a single class. std::function
. Add a missing ;
for boost-1.59
in test/io/read_write.cpp
.
CMake-3.0
is now required. clang-3.7
warnings when std::move
can be omitted from return
statements. fcppt::algorithm::set_difference
. reserve
optimization in fcppt::algorithm::map by either using end() - begin()
or size()
of the source range. noexcept
to move constructors and assignment operators of fcppt::container::raw_vector
, fcppt::container::tree::object and fcppt::container::grid::object. size
function to fcppt::container::grid::pos_ref_range. -Wunused-local-typedef
in external headers. size
function to fcppt::enum_range
. fcppt::math::at_c
that accesses a container using an integral constant as index. noexcept
to the move constructor and assignment operator. fcppt::optional_assign
which assigns to an optional but returns the reference to the optional's content. fcppt::optional_from_pointer
. fcppt::optional_alternative
. SeedSeq
constructor to random number generators. nullptr
. fcppt::type_traits::function_pointer_to_reference
. noexcept
to the move constructor and assignment operator. fcppt::make_homogenous_pair
. size
function to fcppt::int_range. FcpptCMakeUtils
CMAKE_{RUNTIME,LIBRARY_ARCHIVE}_OUTPUT_DIRECTORY
instead of their deprecated versions. fcppt::algorithm::join
and fcppt::algorithm::join_move
have been merged. fcppt::algorithm::map_concat_move
have been merged. emplace
instead of insert
in fcppt::container::get_or_insert. fcppt::container::grid::pos_range
to fcppt::container::grid::pos_ref_range. fcppt/math/box/comparison.hpp
. fcpptmpl
fcppt::mpl::for_each
and fcppt::mpl::invoke_on
to use fcppt::tag to call its function. fcppt::random::distribution::parameters::make_uniform_indices
now returns an optional distribution. This covers the case in which the container is empty. fcppt/strong_typedef_input.hpp
and fcppt/strong_typedef_output.hpp
from fcppt/strong_typedef.hpp
. explicit
. std::swap
includes to conform to C++11
. -Wdeprecated-declarations
in external headers. FCPPT_ASSERT_OPTIONAL_ERROR
which first asserts that an optional is set and then evaluates to its contents. fcppt::forward_optional_get
which can be used to forward the contents of an optional if the optional itself is an rvalue. fcppt::optional_combine
which either chooses one of two optionals or combines both. fcppt::maybe_multi
and fcppt::maybe_void_multi
which accept multiple optionals. std::foward
but works on two types. Removed pointer semantics from optional. See Design for a detailed explanation.
Also removed reset
and assignment of non-lifted values to optionals.
get
has been renamed to get_exn
. prepare_config
function is no longer needed and has been removed. Ignore VC++ warnings about implicitly deleted move ctors and assignment operators in external headers. This goes towards supporting VC++ again, but the 2015 preview still has issues with noexcept.
Added fcppt::algorithm::find_by_opt and fcppt::algorithm::find_by_exn
.
Added fcppt::optional_to_exception
.
Added element_type typedef to fcppt::optional
.
Changed fcppt::algorithm::array_fold_static and fcppt::algorithm::enum_array_fold_static to take function objects that are callable with one parameter instead of zero parameters. This also goes towards supporting VC++ again.
Require cast functions from fcppt.casts in fcppt::strong_typedef_construct_cast and fcppt::mpl::integral_cast
.
Removed fcppt::io::color which had a very questionable implementation.
Removed fcppt::algorithm::copy_n. Use std::copy_n instead.
Removed fcppt::math::is_rational which was unused.
Removed fcppt::number_multiplexer which was undocumented.
Removed fcppt::time::sleep. Use std::this_thread::sleep_for instead.
Fixed cmake-3.1.1 warnings about quoting in if statements.
Fixed structure_cast functions in math to actually use their conversion functions instead of static_cast.
Int ranges where end < begin are now empty.
enable_ifs that checked for type constraints were replaced by static_asserts.
Added FCPPT_DONT_EXPORT option to cmake. This option is useful if modules are found via add_subdirectory.
Added FCPPT_CONFIG_CLANG_VERSION_AT_LEAST and FCPPT_CONFIG_GCC_VERSION_AT_LEAST.
Changed fcppt::algorithm::find_exn and fcppt::algorithm::find_if_exn to take the exception as a parameter.
Changed structure_cast functions of fcppt::math to require a cast function as template parameter.
Forward headers were added to vector/static.hpp, dim/static.hpp, matrix/static.hpp, sphere/circle.hpp and box/rect.hpp.
Removed array_hash which was a duplicate of fcppt::range_hash.
Removed fcppt::math::vector::slerp.
Removed fcppt::algorithm::exception and fcppt::algorithm::element_not_found.
Added missing ${} for cmake-3.1 in fcppt_utils_handle_so_version.
Added const_iterator typedef to fcppt::container::tree::pre_order.
fcppt now uses C++11 which implies that non-conforming compilers are no longer supported.
Added fcppt.casts which includes casts to replace static_cast
.
Added fcppt::enum_max_value, fcppt::enum_size and fcppt::cast_to_enum.
Added fcppt::container::enum_array.
Added fcppt::enum_range.
Added fcppt::runtime_enum.
Added fcppt::algorithm::enum_array_fold and fcppt::algorithm::enum_array_fold_static.
Added fcppt::literal.
Added fcppt::reference_wrapper which supports incomplete types.
CMake
Allow to externally modify fcppt's .so version.
Added fcppt::algorithm::map_concat and fcppt::algorithm::map_concat_move.
Added fcppt::algorithm::array_push_back.
Added fcppt::algorithm::find_if_exn for ranges.
Added fcppt::algorithm::fold for ranges.
Added fcppt::algorithm::repeat.
Added fcppt::algorithm::join_move.
Added fcppt::algorithm::array_fold and fcppt::algorithm::array_fold_static.
Added fcppt::algorithm::array_init and fcppt::algorithm::array_init_move.
fcpptassign
Added fcppt::assign::make_container_opt.
fcppt::container::raw_vector is now movable.
Added initializer list constructor to fcppt::container::raw_vector.
Added fcppt::container::find_exn.
Added fcppt::container::find_opt.
Added fcppt::container::array_hash.
Added array constructor to fcppt::container::bitfield::object.
Added initializer list constructors to fcppt::container::bitfield::object.
Added hash to fcppt::container::bitfield::object.
Added range constructor for fcppt::container::grid::object.
fcppt::container::grid::object is now movable.
Added fcppt::container::grid::pos.
Added fcppt::container::grid::clamp_pos and fcppt::container::grid::clamp_signed_pos.
fcppt::container::tree::object is now movable.
Added fcppt::container::tree::map.
Added fcppt::filesystem::num_subpaths.
Added fcppt::filesystem::strip_prefix.
Added fcppt::filesystem::normalize.
Added fcppt::io::scoped_rdbuf.
Added FCPPT_LOG_DEFINE_OBJECT.
Added fcppt::log::activate_levels_recursive.
Added fcppt::log::deactivate_levels_recursive.
Added fcppt::log::context::transfer_to.
Added fcppt::log::new_sink.
Added fcppt::log::print_all_locations.
Math operations are asymmetric now (e.g. multiplying a vector of meters by a vector of seconds).
Added fcppt::math::ceil_div_signed.
Added hashing function to fcppt::math::vector::object, fcppt::math::dim::object and fcppt::math::matrix::object.
Added fcppt::math::bresenham and fcppt::math::bresenham_thick.
Added scalar addition, subtraction and modulus to fcppt::math::vector::object and fcppt::math::dim::object.
fcpptmpl
Generalized fcppt::mpl::invoke_on
by adding fcppt::mpl::runtime_index
.
fcppt::optional is now movable.
Added fcppt::optional_ref_compare.
Added fcppt::optional_string typedef.
Added operator< to fcppt::optional.
Added fcppt::optional_bind.
Added fcppt::optional_bind_construct.
Added fcppt::from_optional.
Added fcppt::maybe and fcppt::maybe_void.
Random has been improved to allow other types in distributions (e.g. strong typedefs).
Added fcppt::random::make_variate.
Added fcppt::random::distribution::parameters::make_uniform_indices.
Added constructor to fcppt::random::variate which takes the parameters of the distribution.
fcppt::signal::object is now movable.
fcppt::strong_typedef is now movable.
fcppt::variant::object is now movable.
Added fcppt::variant::compare.
Added operator< for fcppt::variant::object.
Added fcppt::range_hash.
Added fcppt::int_range that also works with strong typedefs.
General
Remove consts on return types that have move constructors.
Added override to all overriding functions.
fcppt::algorithm::map now also works with movable types.
Improved fcppt::algorithm::map by reserving the result's size, if possible.
Allow multi argument fcppt::algorithm::join.
fcpptassign
fcppt.assign is now move only. Use initializer lists for all other cases.
Moved most cast functions to the cast namespace.
Allow fcppt::container::grid::resize_preserve_init to be used with types without a default constructor.
fcppt::container::tree::object stores its children move efficiently by not using unique_ptr anymore.
fcppt::log::level_stream is now copyable.
fcppt.log headers have been split to conform to the include what you use style.
fcppt.log is now a distinct library.
Use template aliases for math types.
Changed fcppt::math::vector::fill and fcppt::math::dim::fill to take the vector or dim as template argument.
fcppt::signal::connection is now inline, making fcppt.signal header-only.
Features made obsolete by C++11
Removed SAFE_BOOL which can be replaced by explicit conversion operators.
Removed fcppt::assign::make_array which can be replaced by initializer lists.
Removed fcppt::signal::connection_manager which can be replaced by fcppt::signal::connection_container.
Removed fcppt::scoped_ptr<T> which can be replaced by std::unique_ptr<T> const
.
Removed fcppt::make_auto_ptr.
Removed fcppt.alignment which is replaced by alignas and alignof.
Removed fcppt::container::array. Use std::array instead.
Removed fcppt::type_info which is replaced by std::type_index
.
Removed workarounds.hpp which applied to pre-C++-11 compilers only.
Removed fcppt::container::ptr functions and fcppt::algorithm::ptr_container_ease and fcppt::algorithm::ptr_container_erase_if. Ptr containers should be replaced by containers of unique ptrs.
Others
Removed fcppt::variant::recursive. Recursive variants are inefficient.
Removed fcppt.chrono.asio. Asio now supports std::chrono durations and time points.
Removed dynamic math classes that we didn't have a usecase for.
Removed fcppt::algorithm::copy_if. fcppt::algorithm::map_optional can be used instead.
Removed fcppt::container::map which was incomplete and never documented.
Removed fcppt::log::global which was unused.
Removed FOREACH_ENUMERATOR. Use fcppt::make_enum_range instead.
Removed FCPPT_TRY_DYNAMIC_CAST. Use fcppt::cast::try_dynamic instead.
Removed fcppt::math::quaterion which was unused.
CMake
Fix cmake paths so that fcppt can be used via add_subdirectory.
Fixed linking to Boost found by testing on Fedora.
Fixed FcpptCMakeUtils to not set anything globally.
Fixed comparison of different math objects (e.g. a vector and a vector view).
Fixed a bug in fcppt::optional::operator=.
Fixed fcppt::variant::object::operator= when construction throws.
Expose cmake targets from the build directory and when installing. This should make it a lot easier to use fcppt from other cmake based projects. See Using fcppt
Some updates for VC++11, mostly warning fixes.
Some updates for gcc-4.8 trunk, also mostly warning fixes.
Automatically set CMAKE_INSTALL_LIBDIR
which some distributions set to handle multilib.
Added fcppt::math::box::expand and fcppt::math::box::shrink
Added fcppt::algorithm::join to join two containers into a new one
Added typedefs for N
and M
template parameters for matrix
Added fcppt::assign::make_map as a convenience wrapper for fcppt::assign::make_container so that you don't have to call std::make_pair
Added fcppt::mpl::all_of
Added fcppt::math::step
Added fcppt::math::matrix::transform_point and fcppt::math::matrix::transform_direction to multiply a 4x4 matrix by a 3-dimensinal point or direction vector, respectively.
Added fcppt::math::matrix::exponential_pade to calculate the exponential of a matrix using the Pade algorithm.
Added fcppt::math::matrix::logarithm to calculate the logarithm of a matrix.
Removed include_windows.hpp
from public includes
Removed fcppt.thread
. The purpose of fcppt.thread
was to provide sleeping with a steady clock and to call terminate on joinable threads upon destruction. Both issues have been fixed in Boost.Thread
as of boost-1.52.0
Fixed a bug in fcppt::unique_ptr::reset
Fixed assigning of math views (like matrix's row view)
Reduced smart pointer include dependencies
Don't use -pthread
if not necessary
Prefer newer boost versions over older ones. We also don't set Boost_ADDITIONAL_VERSIONS
anymore.
This release is mainly a bugfix release.
Some documentation fixes.
fcppt::algorithm::levenshtein and fcppt::algorithm::shortest_levenshtein now support boost.range and not only containers.
Added FCPPT_PP_CONST, FCPPT_PP_PURE and FCPPT_PP_WARN_UNUSED_RESULT.
Added missing template keywords for clang-3.1
Added fcppt::math::interpolation::perlin_fifth_degree function (along with the corresponding functor) which implements Ken Perlin's noise interpolation function.
Added fcppt::container::bitfield::object::get and fcppt::container::bitfield::object::static_size for easy integration into other APIs.
Ignore -Wextra-semi
in Boost headers for clang-3.2 trunk
Fixed type problems in bitfield. The size type is now the same as the enum type. The difference type is its signed counterpart.
Enabled more warnings in clang if available, namely -Wundef
, -Wimplicit-fallthrough
, -Wunneeded-member-function
, -Wunused-member-function
, -Wconditional-uninitialized
, -Wunreachable-code
.
Updates for doxygen-1.8.1
Updates for boost-1.50
Made fcppt -Wunused-local-typedefs
-proof.
Introduced new headers fcppt/config/external_begin.hpp
and fcppt/config/external_end.hpp
that are used around external includes and disable a lot of warnings. This way it was possible for us to enable many more warnings for fcppt, especially in VC++.
Removed convenience headers that included everything in a subsystem. They are not considered good style anyway.
Removed trailing whitespaces in the code.
Don't use constants with internal linkage anymore.
Parts of fcppt that require additional libraries to link to are now split into their own libraries, namely fcppt_filesystem
and fcppt_thread
.
Added a new assert framework
Added fcppt::null_ptr which can be used for null pointers to objects.
Added fcppt::algorithm::key_set
Added fcppt::algorithm::set_union
Added fcppt::algorithm::copy_if
Added fcppt::container::grid::iterator_position
Added fcppt::container::grid::is_square
Added support for explicit instantiations of template functions and classes.
Added fcppt::math::vector::mod
Added componentwise_equal functions to replace the removed implicit epsilon comparison.
Added fcppt::io::read_exn
The log library has been redesigned, see Changed functionality
Added fcppt::log::format::time_stamp
fcpptmpl
Added fcppt::mpl::contains_if
.
Added fcppt::mpl::integral_cast
.
Support optional references.
Added fcppt::dynamic_optional_cast, fcppt::static_optional_cast and fcppt::const_optional_cast to cast between optional references.
Added fcppt::type_traits::is_random_access_iterator, fcppt::type_traits::is_bidirectional_iterator, fcppt::type_traits::is_forward_iterator, fcppt::type_traits::is_input_iterator and fcppt::type_traits::is_output_iterator.
Added a free fcppt::variant::get function.
Added nonconst variant visitation using fcppt::ref
Added FCPPT_FOREACH_ENUMERATOR_START_END
Renamed every template named basic
to object
.
fcppt::sn_cast has been renamed to fcppt::safe_numeric_cast. Also, it has been changed to forbid any conversions that can lead to data loss.
fcppt::truncation_check_cast has been improved.
fcppt::container::bitfield::object's constructor is now explicit.
fcppt::endianness has been reworked. Most of the functions have been replaced by fcppt::endianness::convert, see Removed functionality
fcppt::filesystem now uses the boost types directly, because only boost filesystem v3
is supported now. Also, a lot of now unnecessary functions have been removed, see Removed functionality
fcppt::io::read now returns an optional.
Renamed fcppt::math::vector::signed_angle to fcppt::math::vector::signed_angle_between.
Renamed fcppt::math::next_pow_2 to fcppt::math::next_power_of_2.
Renamed fcppt::math::vector::signed_angle_cast to fcppt::math::vector::signed_angle_between_cast.
Renamed fcppt/math/log.hpp
to fcppt/math/log2.hpp
Split fcppt::math::box::stretch into fcppt::math::box::stretch_absolute and fcppt::math::box::stretch_relative
Redesigned the logger library that makes it possible to declare global loggers and enable and disable them at runtime easily.
Formatters are now functions instead of classes.
Renamed fcppt::log::parameters::all to fcppt::log::parameters::object.
The constructor of optionals is now explicit.
fcppt::random has been completely redesigned. Is is now a wrapper around boost.random
that forbids copying of generators and disables all default parameters.
The deleters are no longer template-template parameters. Instead, they are normal template parameters now.
fcppt::io::cout, etc. are now functions to prevent global initialization problems.
Use the standard locale std::locale("")
for the converting string functions by default.
Improved the type safety of the constructors, which now use fcppt::safe_cast
Support references in strong typedefs.
Removed the default constructor.
Variants can no longer be empty. A default constructor is no longer provided.
Made fcppt::type_info constructor explicit.
fcppt::type_name now gets a std::type_info
instead of an fcppt::type_info.
Removed fcppt::utf8. It is not really implementable without OS support.
Removed fcppt::chrono, expect the asio glue code. boost.chrono
should be used.
Removed fcppt::auto_ptr typedef
Removed FCPPT_ASSERT and FCPPT_ASSERT_MESSAGE, which were replaced by the new assert framework
Removed FCPPT_STUB_FUNCTION
Removed fcppt::minmax_pair
Removed fcppt::endianness::copy_n_from_host, fcppt::endianness::copy_n_to_host, fcppt::endianness::copy_n_swapped and fcppt::endianness::copy_swapped, fcppt::endianness::from_big_endian, fcppt::endianness::from_host, fcppt::endianness::from_little_endian, fcppt::endianness::to_big_endian, fcppt::endianness::to_host and fcppt::endianness::to_little_endian.
Removed fcppt::filesystem::first_file, fcppt::filesystem::next_file and fcppt::filesystem::skip_directories.
Removed fcppt::filesystem::create_directories_recursive, fcppt::filesystem::create_directory, fcppt::filesystem::current_path, fcppt::filesystem::directory_iterator, fcppt::filesystem::exists, fcppt::filesystem::file_size, fcppt::filesystem::is_directory, fcppt::filesystem::is_regular, fcppt::filesystem::path, fcppt::filesystem::readlink, fcppt::filesystem::recursive_directory_iterator, fcppt::filesystem::remove and fcppt::filesystem::remove_filename
Removed fcppt::io::cifstream, fcppt::io::cofstream and fcppt::io::cfstream
Removed fcppt::math::almost_zero, fcppt;:math::compare, fcppt::math::machine_epsilon, fcppt::math::vector::is_null, fcppt::math::null and all other epsilon comparing functions. A general epsilon cannot be provided and the user must choose one. As a result of this, all comparison functions use ==
. It is made sure that they still emit warnings when using -Wfloat-equal
.
Removed fcppt::math::vector::to_angle, fcppt::math::vector::transform, fcppt::math::vector::unit_circle and fcppt::math::vector::place.
Removed fcppt::math::dim::quad and fcppt::math::dim::transform.
Removed FCPPT_MATH_INSTANTIATE_ARITHMETIC, fcppt::math::is_negative, fcppt::math::round_div_int, fcppt::math::quad, fcppt::math::inverse and fcppt::math::signum.
Removed fcppt::math::matrix::look_at
Removed broken overloads of fcppt::math::next_pow_2
fcppt::unique_ptr doesn't store its deleter anymore.
Removed fcppt::lexical_cast which was replaced by fcppt::extract_from_string and fcppt::insert_to_string
Removed the nonconst getter from fcppt::strong_typedef
Removed fcppt::variant::apply, use fcppt::variant::apply_unary, fcppt::variant::apply_binary or fcppt::variant::apply_ternary instead.
Fixed fcppt::mpl::index_of
to only allow types that are part of the sequence. This also fixes invalid uses of fcppt::variant::object::get
Fixed fcppt::variant::holds_type when recursive types are involved.
Don't overwrite Boost_ADDITIONAL_VERSIONS
in cmake, just append to it.
Fixed fcppt::algorithm::ptr_container_erase
Fixed the iterator category of fcppt::cyclic_iterator
Fixed static linking of fcppt
Made logging a lot less expensive
fcppt::variant::apply_unary now has linear complexity instead of quadratic complexity if the variant has been declared using an boost::mpl::list
math::matrix::is_matrix
trait. io::stream_to_string
that reads the whole content of a stream into a string. filesystem::create_directory_exn
and filesystem::create_directories_recursive_exn
. backtrace
which can print a stack trace for gcc compiled binaries. FcpptConfig.cmake
file so cmake can find an installed fcppt without FindFcppt.cmake
. container::array
. utf8::from_std_string
. FCPPT_PP_FUNCTION
for VC++. boost::array
to assign::array
. container::ptr::push_front_unique_ptr
. -fvibisibility=hidden
is now optional, but still on by default (use FCPPT_ENABLE_VISIBILITY_HIDDEN
). mpl::append
. ${CMAKE_ROOT}/Modules
if ${CMAKE_INSTALL_PREFIX}
is a prefix of ${CMAKE_ROOT}
. utf8::convert
by utf8::from_fcppt_string
and utf8::to_fcppt_string
. boost::random
instead of tr1::random
. math::matrix::perspective
, math::matrix::orthogonal
and math::matrix::orthogonal_xy
. Every projection function is only meaningful if you know which canonical view volume you are using.FCPPT_DYN_LINK
behaviour in FindFcppt.cmake
. QUIETLY
and REQUIRED
in FindFcppt.cmake
. Boost_INCLUDE_DIRS
rather than Boost_INCLUDE_DIR
. -pthread
for POSIX systems because we use boost.thread and asio. variant::object::get
or ::get_raw
is actually among its possible types. type_traits::is_iterable
, TYPE_TRAITS_GENERATE_HAS_MEMBER_FUNCTION
and TYPE_TRAITS_GENERATE_HAS_TYPE
now properly expose an mpl::bool
. chrono::common_type
has been restricted to fundamental types to avoid compiler errors with certain overloaded operators.