mirror of
https://github.com/boostorg/utility.git
synced 2025-05-09 15:04:00 +00:00
Preparation for delivering nicely-formatted error messages in
Boost.Python. The major change is that, instead of being boost::function2<PyObject*,PyObject*,PyObject*>, py_function is now a runtime-polymorphic wrapper for compile-time polymorphic behavior (just like function) of our own which carries more information/behaviors. In particular, you can retrieve an array of c-strings describing the types in the function signature. Additionally, the minimum and maximum arity are stored in the py_function object instead of in the 'function' object which wraps it. * data_members.hpp - Adjustments for the new py_function. Workarounds for CodeWarrior Pro 8.3 bugs in function template argument deduction with pointers-to-members. * has_back_reference.hpp, test/back_reference.cpp, test/select_holder.cpp - Updated to follow the metafunction protocol * init.hpp, detail/defaults_gen.hpp - Make Keywords a more-specific type in function signatures to prevent string literals that show up as char[N] from binding to the wrong argument (at least Intel 7.1 for Windows does this). * make_function.hpp - Adjustments for the new py_function. Arities are now computed by caller<>. * opaque_pointer_converter.hpp, type_id.hpp - Use BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS facilities; generate specializations that all compilers can handle. * raw_function.hpp - Adjustments for the new py_function. * caller.hpp - Added arity and signature type name reporting. * detail/config.hpp Enable __declspec(dllexport) for Cygwin, thereby fixing the recent horrible Cygwin linking problems. * detail/msvc_typeinfo.hpp - Always pass boost::type<T>* explicitly, thereby working around incompatible notions of how to specialize function templates with default arguments on various compilers. * object/function.hpp , object/function_handle.hpp , object/function_object.hpp , object/function_object.cpp Adjustments for the new py_function. Arities are carried by py_function. * object/iterator.hpp, object/iterator.cpp Adjustments for the new py_function; we have to compute a signature of types to construct it with. * object/py_function.hpp Removed dependency on boost::function; see the comment at the top of this entry for more details. * object/select_holder.hpp Clean up to more closely follow MPL idioms. * test/Jamfile - Adjust the embedding test for the new Cygwin use of declspec. Update bases and pointee tests with missing properties. * test/input_iterator.cpp - Updates for the new iterator adaptors. * test/opaque.py - Add Python encoding comment to suppress PendinDeprecationWarning with recent Python builds. * test/str.cpp Pass a Python long instead of a float to string.expandtabs, suppressing a PendinDeprecationWarning with recent Python builds. * libs/utility/counting_iterator_example.cpp Borland workaround * libs/utility/indirect_iterator_example.cpp const-correctness fix. * [SVN r19247]
This commit is contained in:
parent
7cec198e14
commit
f57c914b8f
@ -44,11 +44,16 @@ int main(int, char*[])
|
|||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
|
||||||
// Example of using counting iterator to create an array of pointers.
|
// Example of using counting iterator to create an array of pointers.
|
||||||
const int N = 7;
|
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
|
||||||
|
const
|
||||||
|
#endif
|
||||||
|
int N = 7;
|
||||||
std::vector<int> numbers;
|
std::vector<int> numbers;
|
||||||
// Fill "numbers" array with [0,N)
|
// Fill "numbers" array with [0,N)
|
||||||
std::copy(boost::make_counting_iterator(0), boost::make_counting_iterator(N),
|
std::copy(
|
||||||
std::back_inserter(numbers));
|
boost::make_counting_iterator(0)
|
||||||
|
, boost::make_counting_iterator(N)
|
||||||
|
, std::back_inserter(numbers));
|
||||||
|
|
||||||
std::vector<std::vector<int>::iterator> pointers;
|
std::vector<std::vector<int>::iterator> pointers;
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ int main(int, char*[])
|
|||||||
|
|
||||||
boost::indirect_iterator<char* const*> mutable_indirect_first(pointers_to_mutable_chars),
|
boost::indirect_iterator<char* const*> mutable_indirect_first(pointers_to_mutable_chars),
|
||||||
mutable_indirect_last(pointers_to_mutable_chars + N);
|
mutable_indirect_last(pointers_to_mutable_chars + N);
|
||||||
boost::indirect_iterator<char const* const*> const_indirect_first(pointers_to_chars),
|
boost::indirect_iterator<char* const*, char const> const_indirect_first(pointers_to_chars),
|
||||||
const_indirect_last(pointers_to_chars + N);
|
const_indirect_last(pointers_to_chars + N);
|
||||||
|
|
||||||
std::transform(const_indirect_first, const_indirect_last,
|
std::transform(const_indirect_first, const_indirect_last,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user