|
0.12.0
|
|
Freundlich's C++ toolkit |
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 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::mpl::contains_if
Support optional references.
Added fcppt::dynamic_optional_cast, fcppt::static_optional_cast and fcppt::const_optional_cast to cast between optional references.
Added a free fcppt::variant::get function.
Added nonconst variant visitation using fcppt::ref
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 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.
1.8.2