development/boost: Updated for version 1.36.0

This commit is contained in:
Heinz Wiesinger 2010-05-11 22:22:23 +02:00 committed by Robby Workman
parent dd32db5be8
commit d68a5e3f17
9 changed files with 482 additions and 732 deletions

View File

@ -4,5 +4,5 @@ Library. One goal is to establish "existing practice" and provide
reference implementations so that the Boost libraries are suitable
for eventual standardization.
If you do not want to build with icu4c support, than you'll need
to pass ICU="NO" to the build-script.
If you want to build with icu4c support, than you'll need
to pass ICU="YES" to the build-script.

View File

@ -1,704 +0,0 @@
diff -U 3 -H -d -r -N -- boost_1_34_1/boost/function/function_base.hpp boost_1_34_1-patched/boost/function/function_base.hpp
--- boost_1_34_1/boost/function/function_base.hpp 2006-10-13 16:29:45.000000000 +0200
+++ boost_1_34_1-patched/boost/function/function_base.hpp 2007-12-22 10:21:10.000000000 +0100
@@ -15,6 +15,7 @@
#include <memory>
#include <new>
#include <typeinfo>
+#include <functional> // unary_function, binary_function
#include <boost/config.hpp>
#include <boost/assert.hpp>
#include <boost/type_traits/is_integral.hpp>
@@ -30,6 +31,20 @@
#endif
#include <boost/function_equal.hpp>
+#if defined(BOOST_MSVC)
+# pragma warning( push )
+# pragma warning( disable : 4793 ) // complaint about native code generation
+# pragma warning( disable : 4127 ) // "conditional expression is constant"
+#endif
+
+// Define BOOST_FUNCTION_STD_NS to the namespace that contains type_info.
+#ifdef BOOST_NO_EXCEPTION_STD_NAMESPACE
+// Embedded VC++ does not have type_info in namespace std
+# define BOOST_FUNCTION_STD_NS
+#else
+# define BOOST_FUNCTION_STD_NS std
+#endif
+
// Borrowed from Boost.Python library: determines the cases where we
// need to use std::type_info::name to compare instead of operator==.
# if (defined(__GNUC__) && __GNUC__ >= 3) \
@@ -59,7 +74,7 @@
#if defined (BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|| defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG) \
- || !(BOOST_STRICT_CONFIG || !defined(__SUNPRO_CC) || __SUNPRO_CC > 0x540)
+ || !(defined(BOOST_STRICT_CONFIG) || !defined(__SUNPRO_CC) || __SUNPRO_CC > 0x540)
# define BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX
#endif
@@ -198,8 +213,8 @@
struct reference_manager
{
static inline void
- get(const function_buffer& in_buffer, function_buffer& out_buffer,
- functor_manager_operation_type op)
+ manage(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op)
{
switch (op) {
case clone_functor_tag:
@@ -215,8 +230,8 @@
// DPG TBD: Since we're only storing a pointer, it's
// possible that the user could ask for a base class or
// derived class. Is that okay?
- const std::type_info& check_type =
- *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);
+ const BOOST_FUNCTION_STD_NS::type_info& check_type =
+ *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(out_buffer.const_obj_ptr);
if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(F)))
out_buffer.obj_ptr = in_buffer.obj_ptr;
else
@@ -265,8 +280,8 @@
else if (op == destroy_functor_tag)
out_buffer.func_ptr = 0;
else /* op == check_functor_type_tag */ {
- const std::type_info& check_type =
- *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);
+ const BOOST_FUNCTION_STD_NS::type_info& check_type =
+ *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(out_buffer.const_obj_ptr);
if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(Functor)))
out_buffer.obj_ptr = &in_buffer.func_ptr;
else
@@ -287,8 +302,8 @@
// Some compilers (Borland, vc6, ...) are unhappy with ~functor_type.
reinterpret_cast<functor_type*>(&out_buffer.data)->~Functor();
} else /* op == check_functor_type_tag */ {
- const std::type_info& check_type =
- *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);
+ const BOOST_FUNCTION_STD_NS::type_info& check_type =
+ *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(out_buffer.const_obj_ptr);
if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(Functor)))
out_buffer.obj_ptr = &in_buffer.data;
else
@@ -348,8 +363,8 @@
# endif // BOOST_NO_STD_ALLOCATOR
out_buffer.obj_ptr = 0;
} else /* op == check_functor_type_tag */ {
- const std::type_info& check_type =
- *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);
+ const BOOST_FUNCTION_STD_NS::type_info& check_type =
+ *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(out_buffer.const_obj_ptr);
if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(Functor)))
out_buffer.obj_ptr = in_buffer.obj_ptr;
else
@@ -368,6 +383,15 @@
mpl::bool_<(function_allows_small_object_optimization<functor_type>::value)>());
}
+ // For member pointers, we treat them as function objects with
+ // the small-object optimization always enabled.
+ static inline void
+ manager(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op, member_ptr_tag)
+ {
+ manager(in_buffer, out_buffer, op, mpl::true_());
+ }
+
public:
/* Dispatch to an appropriate manager based on whether we have a
function pointer or a function object pointer. */
@@ -456,7 +480,6 @@
*/
struct vtable_base
{
- vtable_base() : manager(0) { }
void (*manager)(const function_buffer& in_buffer,
function_buffer& out_buffer,
functor_manager_operation_type op);
@@ -480,13 +503,13 @@
/** Retrieve the type of the stored function object, or typeid(void)
if this is empty. */
- const std::type_info& target_type() const
+ const BOOST_FUNCTION_STD_NS::type_info& target_type() const
{
if (!vtable) return typeid(void);
detail::function::function_buffer type;
vtable->manager(functor, type, detail::function::get_functor_type_tag);
- return *static_cast<const std::type_info*>(type.const_obj_ptr);
+ return *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(type.const_obj_ptr);
}
template<typename Functor>
@@ -558,7 +581,7 @@
#endif
public: // should be protected, but GCC 2.95.3 will fail to allow access
- detail::function::vtable_base* vtable;
+ const detail::function::vtable_base* vtable;
mutable detail::function::function_buffer functor;
};
@@ -733,4 +756,8 @@
#undef BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL
#undef BOOST_FUNCTION_COMPARE_TYPE_ID
+#if defined(BOOST_MSVC)
+# pragma warning( pop )
+#endif
+
#endif // BOOST_FUNCTION_BASE_HEADER
diff -U 3 -H -d -r -N -- boost_1_34_1/boost/function/function_template.hpp boost_1_34_1-patched/boost/function/function_template.hpp
--- boost_1_34_1/boost/function/function_template.hpp 2006-09-29 19:23:28.000000000 +0200
+++ boost_1_34_1-patched/boost/function/function_template.hpp 2007-12-21 10:03:05.000000000 +0100
@@ -11,6 +11,11 @@
// protection.
#include <boost/function/detail/prologue.hpp>
+#if defined(BOOST_MSVC)
+# pragma warning( push )
+# pragma warning( disable : 4127 ) // "conditional expression is constant"
+#endif
+
#define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T)
#define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T)
@@ -54,12 +59,20 @@
BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
#define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER \
BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_MEMBER_INVOKER \
+ BOOST_JOIN(member_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_VOID_MEMBER_INVOKER \
+ BOOST_JOIN(void_member_invoker,BOOST_FUNCTION_NUM_ARGS)
#define BOOST_FUNCTION_GET_FUNCTION_INVOKER \
BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS)
#define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER \
BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
#define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER \
BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_GET_MEMBER_INVOKER \
+ BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_GET_INVOKER \
+ BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS)
#define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS)
#ifndef BOOST_NO_VOID_RETURNS
@@ -70,16 +83,6 @@
# define BOOST_FUNCTION_RETURN(X) X; return BOOST_FUNCTION_VOID_RETURN_TYPE ()
#endif
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable: 4127) // conditional expression is constant.
-#endif
-
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable: 4127) // conditional expression is constant.
-#endif
-
namespace boost {
namespace detail {
namespace function {
@@ -191,6 +194,44 @@
}
};
+#if BOOST_FUNCTION_NUM_ARGS > 0
+ /* Handle invocation of member pointers. */
+ template<
+ typename MemberPtr,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_MEMBER_INVOKER
+ {
+ static R invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_PARMS)
+
+ {
+ MemberPtr* f =
+ reinterpret_cast<MemberPtr*>(&function_obj_ptr.data);
+ return boost::mem_fn(*f)(BOOST_FUNCTION_ARGS);
+ }
+ };
+
+ template<
+ typename MemberPtr,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_VOID_MEMBER_INVOKER
+ {
+ static BOOST_FUNCTION_VOID_RETURN_TYPE
+ invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_PARMS)
+
+ {
+ MemberPtr* f =
+ reinterpret_cast<MemberPtr*>(&function_obj_ptr.data);
+ BOOST_FUNCTION_RETURN(boost::mem_fn(*f)(BOOST_FUNCTION_ARGS));
+ }
+ };
+#endif
+
template<
typename FunctionPtr,
typename R BOOST_FUNCTION_COMMA
@@ -254,12 +295,130 @@
>::type type;
};
+#if BOOST_FUNCTION_NUM_ARGS > 0
+ /* Retrieve the appropriate invoker for a member pointer. */
+ template<
+ typename MemberPtr,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_GET_MEMBER_INVOKER
+ {
+ typedef typename mpl::if_c<(is_void<R>::value),
+ BOOST_FUNCTION_VOID_MEMBER_INVOKER<
+ MemberPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >,
+ BOOST_FUNCTION_MEMBER_INVOKER<
+ MemberPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >
+ >::type type;
+ };
+#endif
+
+ /* Given the tag returned by get_function_tag, retrieve the
+ actual invoker that will be used for the given function
+ object.
+
+ Each specialization contains an "apply" nested class template
+ that accepts the function object, return type, function
+ argument types, and allocator. The resulting "apply" class
+ contains two typedefs, "invoker_type" and "manager_type",
+ which correspond to the invoker and manager types. */
+ template<typename Tag>
+ struct BOOST_FUNCTION_GET_INVOKER { };
+
+ /* Retrieve the invoker for a function pointer. */
+ template<>
+ struct BOOST_FUNCTION_GET_INVOKER<function_ptr_tag>
+ {
+ template<typename FunctionPtr,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
+ typename Allocator>
+ struct apply
+ {
+ typedef typename BOOST_FUNCTION_GET_FUNCTION_INVOKER<
+ FunctionPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef functor_manager<FunctionPtr, Allocator> manager_type;
+ };
+ };
+
+#if BOOST_FUNCTION_NUM_ARGS > 0
+ /* Retrieve the invoker for a member pointer. */
+ template<>
+ struct BOOST_FUNCTION_GET_INVOKER<member_ptr_tag>
+ {
+ template<typename MemberPtr,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
+ typename Allocator>
+ struct apply
+ {
+ typedef typename BOOST_FUNCTION_GET_MEMBER_INVOKER<
+ MemberPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef functor_manager<MemberPtr, Allocator> manager_type;
+ };
+ };
+#endif
+
+ /* Retrieve the invoker for a function object. */
+ template<>
+ struct BOOST_FUNCTION_GET_INVOKER<function_obj_tag>
+ {
+ template<typename FunctionObj,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
+ typename Allocator>
+ struct apply
+ {
+ typedef typename BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER<
+ FunctionObj,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef functor_manager<FunctionObj, Allocator> manager_type;
+ };
+ };
+
+ /* Retrieve the invoker for a reference to a function object. */
+ template<>
+ struct BOOST_FUNCTION_GET_INVOKER<function_obj_ref_tag>
+ {
+ template<typename RefWrapper,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
+ typename Allocator>
+ struct apply
+ {
+ typedef typename BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER<
+ typename RefWrapper::type,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef reference_manager<typename RefWrapper::type> manager_type;
+ };
+ };
+
/**
* vtable for a specific boost::function instance.
*/
template<typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
typename Allocator>
- struct BOOST_FUNCTION_VTABLE : vtable_base
+ struct BOOST_FUNCTION_VTABLE
{
#ifndef BOOST_NO_VOID_RETURNS
typedef R result_type;
@@ -272,50 +431,25 @@
BOOST_FUNCTION_TEMPLATE_ARGS);
template<typename F>
- BOOST_FUNCTION_VTABLE(F f) : vtable_base(), invoker(0)
- {
- init(f);
- }
-
- template<typename F>
- bool assign_to(F f, function_buffer& functor)
+ bool assign_to(const F& f, function_buffer& functor) const
{
typedef typename get_function_tag<F>::type tag;
return assign_to(f, functor, tag());
}
- void clear(function_buffer& functor)
+ void clear(function_buffer& functor) const
{
- if (manager)
- manager(functor, functor, destroy_functor_tag);
+ if (base.manager)
+ base.manager(functor, functor, destroy_functor_tag);
}
-
+#ifndef BOOST_NO_PRIVATE_IN_AGGREGATE
private:
- template<typename F>
- void init(F f)
- {
- typedef typename get_function_tag<F>::type tag;
- init(f, tag());
- }
-
+#endif
// Function pointers
template<typename FunctionPtr>
- void init(FunctionPtr /*f*/, function_ptr_tag)
- {
- typedef typename BOOST_FUNCTION_GET_FUNCTION_INVOKER<
- FunctionPtr,
- R BOOST_FUNCTION_COMMA
- BOOST_FUNCTION_TEMPLATE_ARGS
- >::type
- actual_invoker_type;
-
- invoker = &actual_invoker_type::invoke;
- manager = &functor_manager<FunctionPtr, Allocator>::manage;
- }
-
- template<typename FunctionPtr>
bool
- assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)
+ assign_to(FunctionPtr f, function_buffer& functor,
+ function_ptr_tag) const
{
this->clear(functor);
if (f) {
@@ -331,22 +465,13 @@
// Member pointers
#if BOOST_FUNCTION_NUM_ARGS > 0
template<typename MemberPtr>
- void init(MemberPtr f, member_ptr_tag)
- {
- // DPG TBD: Add explicit support for member function
- // objects, so we invoke through mem_fn() but we retain the
- // right target_type() values.
- this->init(mem_fn(f));
- }
-
- template<typename MemberPtr>
- bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)
+ bool
+ assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) const
{
- // DPG TBD: Add explicit support for member function
- // objects, so we invoke through mem_fn() but we retain the
- // right target_type() values.
if (f) {
- this->assign_to(mem_fn(f), functor);
+ // Always use the small-object optimization for member
+ // pointers.
+ assign_functor(f, functor, mpl::true_());
return true;
} else {
return false;
@@ -355,24 +480,11 @@
#endif // BOOST_FUNCTION_NUM_ARGS > 0
// Function objects
- template<typename FunctionObj>
- void init(FunctionObj /*f*/, function_obj_tag)
- {
- typedef typename BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER<
- FunctionObj,
- R BOOST_FUNCTION_COMMA
- BOOST_FUNCTION_TEMPLATE_ARGS
- >::type
- actual_invoker_type;
-
- invoker = &actual_invoker_type::invoke;
- manager = &functor_manager<FunctionObj, Allocator>::manage;
- }
-
// Assign to a function object using the small object optimization
template<typename FunctionObj>
void
- assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)
+ assign_functor(const FunctionObj& f, function_buffer& functor,
+ mpl::true_) const
{
new ((void*)&functor.data) FunctionObj(f);
}
@@ -380,7 +492,8 @@
// Assign to a function object allocated on the heap.
template<typename FunctionObj>
void
- assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)
+ assign_functor(const FunctionObj& f, function_buffer& functor,
+ mpl::false_) const
{
#ifndef BOOST_NO_STD_ALLOCATOR
typedef typename Allocator::template rebind<FunctionObj>::other
@@ -400,7 +513,8 @@
template<typename FunctionObj>
bool
- assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)
+ assign_to(const FunctionObj& f, function_buffer& functor,
+ function_obj_tag) const
{
if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
assign_functor(f, functor,
@@ -413,24 +527,9 @@
// Reference to a function object
template<typename FunctionObj>
- void
- init(const reference_wrapper<FunctionObj>& /*f*/, function_obj_ref_tag)
- {
- typedef typename BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER<
- FunctionObj,
- R BOOST_FUNCTION_COMMA
- BOOST_FUNCTION_TEMPLATE_ARGS
- >::type
- actual_invoker_type;
-
- invoker = &actual_invoker_type::invoke;
- manager = &reference_manager<FunctionObj>::get;
- }
-
- template<typename FunctionObj>
bool
assign_to(const reference_wrapper<FunctionObj>& f,
- function_buffer& functor, function_obj_ref_tag)
+ function_buffer& functor, function_obj_ref_tag) const
{
if (!boost::detail::function::has_empty_target(f.get_pointer())) {
// DPG TBD: We might need to detect constness of
@@ -445,6 +544,7 @@
}
public:
+ vtable_base base;
invoker_type invoker;
};
} // end namespace function
@@ -456,6 +556,17 @@
typename Allocator = BOOST_FUNCTION_DEFAULT_ALLOCATOR
>
class BOOST_FUNCTION_FUNCTION : public function_base
+
+#if BOOST_FUNCTION_NUM_ARGS == 1
+
+ , public std::unary_function<T0,R>
+
+#elif BOOST_FUNCTION_NUM_ARGS == 2
+
+ , public std::binary_function<T0,T1,R>
+
+#endif
+
{
public:
#ifndef BOOST_NO_VOID_RETURNS
@@ -537,7 +648,7 @@
if (this->empty())
boost::throw_exception(bad_function_call());
- return static_cast<vtable_type*>(vtable)->invoker
+ return reinterpret_cast<const vtable_type*>(vtable)->invoker
(this->functor BOOST_FUNCTION_COMMA BOOST_FUNCTION_ARGS);
}
#else
@@ -561,12 +672,16 @@
operator=(Functor BOOST_FUNCTION_TARGET_FIX(const &) f)
{
this->clear();
+#ifndef BOOST_NO_EXCEPTIONS
try {
this->assign_to(f);
} catch (...) {
vtable = 0;
throw;
}
+#else
+ this->assign_to(f);
+#endif
return *this;
}
@@ -592,12 +707,16 @@
return *this;
this->clear();
+#ifndef BOOST_NO_EXCEPTIONS
try {
this->assign_to_own(f);
} catch (...) {
vtable = 0;
throw;
}
+#else
+ this->assign_to_own(f);
+#endif
return *this;
}
@@ -615,7 +734,7 @@
void clear()
{
if (vtable) {
- static_cast<vtable_type*>(vtable)->clear(this->functor);
+ reinterpret_cast<const vtable_type*>(vtable)->clear(this->functor);
vtable = 0;
}
}
@@ -650,10 +769,24 @@
}
template<typename Functor>
- void assign_to(Functor f)
+ void assign_to(const Functor& f)
{
- static vtable_type stored_vtable(f);
- if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;
+ using detail::function::vtable_base;
+
+ typedef typename detail::function::get_function_tag<Functor>::type tag;
+ typedef detail::function::BOOST_FUNCTION_GET_INVOKER<tag> get_invoker;
+ typedef typename get_invoker::
+ template apply<Functor, R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS, Allocator>
+ handler_type;
+
+ typedef typename handler_type::invoker_type invoker_type;
+ typedef typename handler_type::manager_type manager_type;
+
+ static const vtable_type stored_vtable =
+ { { &manager_type::manage }, &invoker_type::invoke };
+
+ if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable.base;
else vtable = 0;
}
};
@@ -688,7 +821,7 @@
if (this->empty())
boost::throw_exception(bad_function_call());
- return static_cast<vtable_type*>(vtable)->invoker
+ return reinterpret_cast<const vtable_type*>(vtable)->invoker
(this->functor BOOST_FUNCTION_COMMA BOOST_FUNCTION_ARGS);
}
#endif
@@ -798,21 +931,14 @@
}
};
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
#undef BOOST_FUNCTION_PARTIAL_SPEC
#endif // have partial specialization
} // end namespace boost
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
// Cleanup after ourselves...
#undef BOOST_FUNCTION_VTABLE
+#undef BOOST_FUNCTION_GET_INVOKER
#undef BOOST_FUNCTION_DEFAULT_ALLOCATOR
#undef BOOST_FUNCTION_COMMA
#undef BOOST_FUNCTION_FUNCTION
@@ -822,10 +948,12 @@
#undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
#undef BOOST_FUNCTION_FUNCTION_REF_INVOKER
#undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
+#undef BOOST_FUNCTION_MEMBER_INVOKER
+#undef BOOST_FUNCTION_VOID_MEMBER_INVOKER
#undef BOOST_FUNCTION_GET_FUNCTION_INVOKER
#undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
#undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
-#undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER
+#undef BOOST_FUNCTION_GET_MEMBER_INVOKER
#undef BOOST_FUNCTION_TEMPLATE_PARMS
#undef BOOST_FUNCTION_TEMPLATE_ARGS
#undef BOOST_FUNCTION_PARMS
@@ -835,3 +963,7 @@
#undef BOOST_FUNCTION_ARG_TYPES
#undef BOOST_FUNCTION_VOID_RETURN_TYPE
#undef BOOST_FUNCTION_RETURN
+
+#if defined(BOOST_MSVC)
+# pragma warning( pop )
+#endif

View File

@ -3,7 +3,7 @@
# Slackware build script for boost
# Copyright 2007-2008 Eric Hameleers <alien@slackware.com>
# Copyright 2007 Heinz Wiesinger
# Copyright 2007-2008 Heinz Wiesinger <pprkut@liwjatan.at>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@ -29,22 +29,25 @@
# -- no additional license terms and no copyright
PRGNAM=boost
VERSION=1_34_1
VERSION=1_36_0
ARCH=${ARCH:-i486}
BUILD=${BUILD:-3}
BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
ICU=${ICU:-YES}
ICU=${ICU:-no}
PKG_VERSION=$(echo $VERSION | tr '_' '.') # Leave this alone
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
fi
set -e
@ -62,20 +65,23 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
if [ "$ICU" = "YES" ]; then
do_icu="-sICU_PATH=/usr"
# Apply Hotfixes from http://svn.boost.org/trac/boost/wiki/ReleasePractices/HotFixes
patch -p2 -i $CWD/patches/changeset_r48141.diff
patch -p2 -i $CWD/patches/changeset_r48192.diff
patch -p2 -i $CWD/patches/changeset_r48374.diff
patch -p2 -i $CWD/patches/changeset_r48377.diff
patch -p2 -i $CWD/patches/changeset_r48462.diff
if [ "$ICU" = "no" ]; then
ICU_FLAGS=""
else
do_icu=""
ICU_FLAGS="-sICU_PATH=/usr"
fi
# This is the python we build against:
PYTHON_VERSION=$(python -c 'import sys; print sys.version[:3]')
PYTHON_FLAGS="-sPYTHON_ROOT=/usr -sPYTHON_VERSION=$PYTHON_VERSION"
# This fixes a critical bug that affects the construction of Boost.Function
# objects in a multi-threaded context.
patch -p1 < $CWD/boost-1_34_1-function-bugfix.diff
# First build bjam, the boost build system:
cd tools/jam/src
CFLAGS="$SLKCFLAGS -fno-strict-aliasing" CC=gcc ./build.sh cc
@ -83,46 +89,56 @@ cd -
BJAM=$(find tools/jam/src/ -name bjam -a -type f)
# Change the build options from 'minimal' to what we want
FLAGS="<threading>multi <threading>single <optimization>speed <inlining>full"
sed -i "s/ <threading>multi/ $FLAGS/" Jamroot
# disable static libraries
sed -i "s/<link>shared <link>static/<link>shared/" Jamroot
# Create build subdirectory
mkdir obj
# Next, we build boost using bjam
$BJAM \
$BJAM \
release \
"-sBUILD=<optimization>speed <inlining>full <threading>single/multi" \
"-sNO_COMPRESSION=0" \
"-sZLIB_INCLUDE=/usr/include" \
"-sZLIB_LIBPATH=/usr/lib" \
"-sBZIP2_INCLUDE=/usr/include" \
"-sBZIP2_LIBPATH=/usr/lib" \
"-sEXPAT_INCLUDE=/usr/include" \
"-sEXPAT_LIBPATH=/usr/lib" \
--toolset=gcc \
--layout=system \
--builddir=obj \
--prefix=/usr \
--build-type=minimal \
$PYTHON_FLAGS \
$do_icu \
stage
$ICU_FLAGS
# And then install boost..
mkdir -p $PKG/usr/{lib,include}
$BJAM \
release \
"-sEXPAT_INCLUDE=/usr/include" \
"-sEXPAT_LIBPATH=/usr/lib" \
--toolset=gcc \
--layout=system \
--builddir=obj \
--prefix=$PKG/usr \
--build-type=minimal \
$PYTHON_FLAGS \
$do_icu \
$ICU_FLAGS \
install
( cd $PKG
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$PKG_VERSION
cp -a LICENSE_1_0.txt README $PKG/usr/doc/$PRGNAM-$PKG_VERSION
cp -a LICENSE_1_0.txt INSTALL $PKG/usr/doc/$PRGNAM-$PKG_VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$PKG_VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install

View File

@ -1,8 +1,8 @@
PRGNAM="boost"
VERSION="1.34.1"
VERSION="1.36.0"
HOMEPAGE="http://www.boost.org/"
DOWNLOAD="http://downloads.sourceforge.net/boost/boost_1_34_1.tar.bz2"
MD5SUM="2d938467e8a448a2c9763e0a9f8ca7e5"
DOWNLOAD="http://downloads.sourceforge.net/boost/boost_1_36_0.tar.bz2"
MD5SUM="328bfec66c312150e4c2a78dcecb504b"
MAINTAINER="ppr:kut"
EMAIL="HMWiesinger@gmx.at"
APPROVED="rworkman,alien"
EMAIL="pprkut@liwjatan.at"
APPROVED="rworkman"

View File

@ -0,0 +1,31 @@
Index: /trunk/boost/xpressive/detail/utility/hash_peek_bitset.hpp
===================================================================
--- /trunk/boost/xpressive/detail/utility/hash_peek_bitset.hpp (revision 43799)
+++ /trunk/boost/xpressive/detail/utility/hash_peek_bitset.hpp (revision 48141)
@@ -105,5 +105,8 @@
void set_bitset(hash_peek_bitset<Char> const &that)
{
- this->bset_ |= that.bset_;
+ if(this->test_icase_(that.icase()))
+ {
+ this->bset_ |= that.bset_;
+ }
}
Index: /trunk/libs/xpressive/test/regress.txt
===================================================================
--- /trunk/libs/xpressive/test/regress.txt (revision 47901)
+++ /trunk/libs/xpressive/test/regress.txt (revision 48141)
@@ -3739,2 +3739,12 @@
br0=c
[end]
+
+[nocasealternate]
+str=common HighLight and Blow this
+pat=highlight|blow
+flg=ig
+sub=<b>$&</b>
+res=common <b>HighLight</b> and <b>Blow</b> this
+br0=HighLight
+br1=Blow
+[end]

View File

@ -0,0 +1,36 @@
Index: /trunk/boost/filesystem/operations.hpp
===================================================================
--- /trunk/boost/filesystem/operations.hpp (revision 47181)
+++ /trunk/boost/filesystem/operations.hpp (revision 48192)
@@ -1021,10 +1021,16 @@
void replace_filename( const string_type & s,
file_status st, file_status symlink_st )
- {
- m_path.remove_filename();
- m_path /= s;
- m_status = st;
- m_symlink_status = symlink_st;
- }
+ {
+ m_path.remove_filename();
+ m_path /= s;
+ m_status = st;
+ m_symlink_status = symlink_st;
+ }
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ void replace_leaf( const string_type & s,
+ file_status st, file_status symlink_st )
+ { replace_filename( s, st, symlink_st ); }
+# endif
const Path & path() const { return m_path; }
@@ -1040,4 +1046,8 @@
// deprecated functions preserve common use cases in legacy code
typename Path::string_type filename() const
+ {
+ return path().filename();
+ }
+ typename Path::string_type leaf() const
{
return path().filename();

View File

@ -0,0 +1,18 @@
Index: /trunk/boost/filesystem/path.hpp
===================================================================
--- /trunk/boost/filesystem/path.hpp (revision 47923)
+++ /trunk/boost/filesystem/path.hpp (revision 48374)
@@ -230,4 +230,6 @@
string_type leaf() const { return filename(); }
basic_path branch_path() const { return parent_path(); }
+ bool has_leaf() const { return !m_path.empty(); }
+ bool has_branch_path() const { return !parent_path().empty(); }
# endif
@@ -238,5 +240,5 @@
bool has_root_directory() const;
bool has_relative_path() const { return !relative_path().empty(); }
- bool has_filename() const { return !m_path.empty(); }
+ bool has_filename() const { return !m_path.empty(); }
bool has_parent_path() const { return !parent_path().empty(); }

View File

@ -0,0 +1,337 @@
Index: /trunk/boost/filesystem/operations.hpp
===================================================================
--- /trunk/boost/filesystem/operations.hpp (revision 48192)
+++ /trunk/boost/filesystem/operations.hpp (revision 48377)
@@ -122,8 +122,4 @@
namespace detail
{
- // singular object used only as a tag; thus initialization and
- // thread-safety are not issues
- BOOST_FILESYSTEM_DECL extern system::error_code throws;
-
typedef std::pair< system::error_code, bool >
query_pair;
@@ -235,5 +231,8 @@
template<class Path>
- unsigned long remove_all_aux( const Path & ph );
+ bool remove_aux( const Path & ph, file_status f );
+
+ template<class Path>
+ unsigned long remove_all_aux( const Path & ph, file_status f );
} // namespace detail
@@ -475,17 +474,22 @@
}
- BOOST_FS_FUNC(void) remove( const Path & ph, system::error_code & ec = detail::throws )
- {
- system::error_code error( detail::remove_api(ph.external_file_string()) );
- if ( error && &ec == &detail::throws )
- boost::throw_exception( basic_filesystem_error<Path>(
- "boost::filesystem::remove", ph, error ) );
- ec = error;
+ BOOST_FS_FUNC(bool) remove( const Path & ph )
+ {
+ system::error_code ec;
+ file_status f = symlink_status( ph, ec );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::remove", ph, ec ) );
+ return detail::remove_aux( ph, f );
}
BOOST_FS_FUNC(unsigned long) remove_all( const Path & ph )
{
- return exists( ph )|| is_symlink( ph )
- ? detail::remove_all_aux( ph ) : 0;
+ system::error_code ec;
+ file_status f = symlink_status( ph, ec );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::remove_all", ph, ec ) );
+ return exists( f ) ? detail::remove_all_aux( ph, f ) : 0;
}
@@ -713,6 +717,8 @@
{ return create_symlink<wpath>( to_ph, from_ph, ec ); }
- inline void remove( const path & ph ) { remove<path>( ph ); }
- inline void remove( const wpath & ph ) { remove<wpath>( ph ); }
+ inline bool remove( const path & ph )
+ { return remove<path>( ph ); }
+ inline bool remove( const wpath & ph )
+ { return remove<wpath>( ph ); }
inline unsigned long remove_all( const path & ph )
@@ -763,18 +769,37 @@
{
template<class Path>
- unsigned long remove_all_aux( const Path & ph )
+ bool remove_aux( const Path & ph, file_status f )
+ {
+ if ( exists( f ) )
+ {
+ system::error_code ec = remove_api( ph.external_file_string() );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::remove", ph, ec ) );
+ return true;
+ }
+ return false;
+ }
+
+ template<class Path>
+ unsigned long remove_all_aux( const Path & ph, file_status f )
{
static const boost::filesystem::basic_directory_iterator<Path> end_itr;
unsigned long count = 1;
- if ( !boost::filesystem::is_symlink( ph ) // don't recurse symbolic links
- && boost::filesystem::is_directory( ph ) )
+ if ( !boost::filesystem::is_symlink( f ) // don't recurse symbolic links
+ && boost::filesystem::is_directory( f ) )
{
for ( boost::filesystem::basic_directory_iterator<Path> itr( ph );
itr != end_itr; ++itr )
{
- count += remove_all_aux( itr->path() );
+ boost::system::error_code ec;
+ boost::filesystem::file_status fn = boost::filesystem::symlink_status( itr->path(), ec );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem:remove_all", ph, ec ) );
+ count += remove_all_aux( itr->path(), fn );
}
}
- boost::filesystem::remove( ph );
+ remove_aux( ph, f );
return count;
}
Index: /trunk/libs/filesystem/test/operations_test.cpp
===================================================================
--- /trunk/libs/filesystem/test/operations_test.cpp (revision 47181)
+++ /trunk/libs/filesystem/test/operations_test.cpp (revision 48377)
@@ -777,8 +777,8 @@
BOOST_CHECK( fs::exists( file_ph ) );
BOOST_CHECK( !fs::is_directory( file_ph ) );
- fs::remove( file_ph );
+ BOOST_CHECK( fs::remove( file_ph ) );
BOOST_CHECK( !fs::exists( file_ph ) );
- fs::remove( "no-such-file" );
- fs::remove( "no-such-directory/no-such-file" );
+ BOOST_CHECK( !fs::remove( "no-such-file" ) );
+ BOOST_CHECK( !fs::remove( "no-such-directory/no-such-file" ) );
// remove() directory
@@ -791,5 +791,5 @@
bad_remove_dir = dir;
BOOST_CHECK( CHECK_EXCEPTION( bad_remove, ENOTEMPTY ) );
- fs::remove( d1 );
+ BOOST_CHECK( fs::remove( d1 ) );
BOOST_CHECK( !fs::exists( d1 ) );
@@ -798,5 +798,5 @@
// remove() dangling symbolic link
fs::path link( "dangling_link" );
- fs::remove( link );
+ fs::remove( link ); // remove any residue from past tests
BOOST_CHECK( !fs::is_symlink( link ) );
BOOST_CHECK( !fs::exists( link ) );
@@ -804,14 +804,14 @@
BOOST_CHECK( !fs::exists( link ) );
BOOST_CHECK( fs::is_symlink( link ) );
- fs::remove( link );
+ BOOST_CHECK( fs::remove( link ) );
BOOST_CHECK( !fs::is_symlink( link ) );
// remove() self-refering symbolic link
link = "link_to_self";
- fs::remove( link );
+ fs::remove( link ); // remove any residue from past tests
BOOST_CHECK( !fs::is_symlink( link ) );
BOOST_CHECK( !fs::exists( link ) );
fs::create_symlink( link, link );
- fs::remove( link );
+ BOOST_CHECK( fs::remove( link ) );
BOOST_CHECK( !fs::exists( link ) );
BOOST_CHECK( !fs::is_symlink( link ) );
@@ -820,12 +820,12 @@
link = "link_to_a";
fs::path link2( "link_to_b" );
- fs::remove( link );
- fs::remove( link2 );
+ fs::remove( link ); // remove any residue from past tests
+ fs::remove( link2 ); // remove any residue from past tests
BOOST_CHECK( !fs::is_symlink( link ) );
BOOST_CHECK( !fs::exists( link ) );
fs::create_symlink( link, link2 );
fs::create_symlink( link2, link );
- fs::remove( link );
- fs::remove( link2 );
+ BOOST_CHECK( fs::remove( link ) );
+ BOOST_CHECK( fs::remove( link2 ) );
BOOST_CHECK( !fs::exists( link ) );
BOOST_CHECK( !fs::exists( link2 ) );
@@ -834,5 +834,5 @@
// remove() symbolic link to file
file_ph = "link_target";
- fs::remove( file_ph );
+ fs::remove( file_ph ); // remove any residue from past tests
BOOST_CHECK( !fs::exists( file_ph ) );
create_file( file_ph, "" );
@@ -846,9 +846,9 @@
BOOST_CHECK( fs::is_regular_file( link ) );
BOOST_CHECK( fs::is_symlink( link ) );
- fs::remove( link );
+ BOOST_CHECK( fs::remove( link ) );
BOOST_CHECK( fs::exists( file_ph ) );
BOOST_CHECK( !fs::exists( link ) );
BOOST_CHECK( !fs::is_symlink( link ) );
- fs::remove( file_ph );
+ BOOST_CHECK( fs::remove( file_ph ) );
BOOST_CHECK( !fs::exists( file_ph ) );
}
Index: /trunk/libs/filesystem/test/msvc/fstream_test/fstream_test.vcproj
===================================================================
--- /trunk/libs/filesystem/test/msvc/fstream_test/fstream_test.vcproj (revision 46750)
+++ /trunk/libs/filesystem/test/msvc/fstream_test/fstream_test.vcproj (revision 48377)
@@ -87,5 +87,5 @@
<Tool
Name="VCPostBuildEventTool"
- Description="Auto test run"
+ Description="run test"
CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
/>
@@ -164,4 +164,6 @@
<Tool
Name="VCPostBuildEventTool"
+ Description="run test"
+ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
/>
</Configuration>
Index: /trunk/libs/filesystem/test/msvc/operations_test/operations_test.vcproj
===================================================================
--- /trunk/libs/filesystem/test/msvc/operations_test/operations_test.vcproj (revision 46750)
+++ /trunk/libs/filesystem/test/msvc/operations_test/operations_test.vcproj (revision 48377)
@@ -87,5 +87,5 @@
<Tool
Name="VCPostBuildEventTool"
- Description="Auto test run"
+ Description="run test"
CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
/>
@@ -164,4 +164,6 @@
<Tool
Name="VCPostBuildEventTool"
+ Description="run test"
+ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
/>
</Configuration>
Index: /trunk/libs/filesystem/test/msvc/large_file_support_test/large_file_support_test.vcproj
===================================================================
--- /trunk/libs/filesystem/test/msvc/large_file_support_test/large_file_support_test.vcproj (revision 46750)
+++ /trunk/libs/filesystem/test/msvc/large_file_support_test/large_file_support_test.vcproj (revision 48377)
@@ -87,5 +87,5 @@
<Tool
Name="VCPostBuildEventTool"
- Description="Auto test run"
+ Description="run test"
CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
/>
@@ -164,4 +164,6 @@
<Tool
Name="VCPostBuildEventTool"
+ Description="run test"
+ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
/>
</Configuration>
Index: /trunk/libs/filesystem/test/msvc/simple_ls/simple_ls.vcproj
===================================================================
--- /trunk/libs/filesystem/test/msvc/simple_ls/simple_ls.vcproj (revision 46750)
+++ /trunk/libs/filesystem/test/msvc/simple_ls/simple_ls.vcproj (revision 48377)
@@ -87,4 +87,6 @@
<Tool
Name="VCPostBuildEventTool"
+ Description=""
+ CommandLine=""
/>
</Configuration>
@@ -162,4 +164,6 @@
<Tool
Name="VCPostBuildEventTool"
+ Description=""
+ CommandLine=""
/>
</Configuration>
Index: /trunk/libs/filesystem/test/msvc/wide_test/wide_test.vcproj
===================================================================
--- /trunk/libs/filesystem/test/msvc/wide_test/wide_test.vcproj (revision 46750)
+++ /trunk/libs/filesystem/test/msvc/wide_test/wide_test.vcproj (revision 48377)
@@ -87,5 +87,5 @@
<Tool
Name="VCPostBuildEventTool"
- Description="Auto test run"
+ Description="run test"
CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
/>
@@ -164,4 +164,6 @@
<Tool
Name="VCPostBuildEventTool"
+ Description="run test"
+ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
/>
</Configuration>
Index: /trunk/libs/filesystem/test/msvc/mbcopy/mbcopy.vcproj
===================================================================
--- /trunk/libs/filesystem/test/msvc/mbcopy/mbcopy.vcproj (revision 46750)
+++ /trunk/libs/filesystem/test/msvc/mbcopy/mbcopy.vcproj (revision 48377)
@@ -87,4 +87,6 @@
<Tool
Name="VCPostBuildEventTool"
+ Description="run test"
+ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
/>
</Configuration>
@@ -162,4 +164,6 @@
<Tool
Name="VCPostBuildEventTool"
+ Description="run test"
+ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
/>
</Configuration>
Index: /trunk/libs/filesystem/test/msvc/convenience_test/convenience_test.vcproj
===================================================================
--- /trunk/libs/filesystem/test/msvc/convenience_test/convenience_test.vcproj (revision 46750)
+++ /trunk/libs/filesystem/test/msvc/convenience_test/convenience_test.vcproj (revision 48377)
@@ -87,5 +87,5 @@
<Tool
Name="VCPostBuildEventTool"
- Description="Auto test run"
+ Description="run test"
CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
/>
@@ -164,4 +164,6 @@
<Tool
Name="VCPostBuildEventTool"
+ Description="run test"
+ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
/>
</Configuration>
Index: /trunk/libs/filesystem/test/msvc/path_test/path_test.vcproj
===================================================================
--- /trunk/libs/filesystem/test/msvc/path_test/path_test.vcproj (revision 46750)
+++ /trunk/libs/filesystem/test/msvc/path_test/path_test.vcproj (revision 48377)
@@ -87,5 +87,5 @@
<Tool
Name="VCPostBuildEventTool"
- Description="Auto test run"
+ Description="run test"
CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
/>
@@ -164,4 +164,6 @@
<Tool
Name="VCPostBuildEventTool"
+ Description="run test"
+ CommandLine="&quot;$(TargetDir)\$(TargetName).exe&quot; --result_code=no --report_level=no"
/>
</Configuration>

View File

@ -0,0 +1,16 @@
Index: /trunk/boost/filesystem/convenience.hpp
===================================================================
--- /trunk/boost/filesystem/convenience.hpp (revision 47181)
+++ /trunk/boost/filesystem/convenience.hpp (revision 48462)
@@ -95,4 +95,5 @@
{ return create_directories<wpath>(ph); }
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
inline std::string extension(const path& ph)
{ return extension<path>(ph); }
@@ -109,4 +110,5 @@
inline wpath change_extension( const wpath & ph, const std::wstring& new_ex )
{ return change_extension<wpath>( ph, new_ex ); }
+# endif
# endif