2
0
mirror of https://github.com/boostorg/python.git synced 2026-01-23 05:42:30 +00:00

PP usage speedups (mostly for EDG)

[SVN r15286]
This commit is contained in:
Dave Abrahams
2002-09-13 01:48:50 +00:00
parent d91b6e9a1b
commit 2dbb0093c1
9 changed files with 31 additions and 31 deletions

View File

@@ -54,8 +54,8 @@ call(PyObject* callable
return converter(
PyEval_CallFunction(
callable
, const_cast<char*>("(" BOOST_PP_REPEAT(N, BOOST_PYTHON_FIXED, "O") ")")
BOOST_PP_REPEAT(N, BOOST_PYTHON_FAST_ARG_TO_PYTHON_GET, nil)
, const_cast<char*>("(" BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_FIXED, "O") ")")
BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_FAST_ARG_TO_PYTHON_GET, nil)
));
}

View File

@@ -54,8 +54,8 @@ call_method(PyObject* self, char const* name
PyEval_CallMethod(
self
, const_cast<char*>(name)
, const_cast<char*>("(" BOOST_PP_REPEAT(N, BOOST_PYTHON_FIXED, "O") ")")
BOOST_PP_REPEAT(N, BOOST_PYTHON_FAST_ARG_TO_PYTHON_GET, nil)
, const_cast<char*>("(" BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_FIXED, "O") ")")
BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_FAST_ARG_TO_PYTHON_GET, nil)
));
}

View File

@@ -41,21 +41,21 @@ struct func_stubs_base {};
#define BPL_IMPL_TYPEDEF_GEN(z, INDEX, DATA) \
typedef typename boost::python::detail::type_at \
< \
BOOST_PP_ADD(INDEX, DATA), \
BOOST_PP_ADD_D(1, INDEX, DATA), \
SigT \
>::type BOOST_PP_CAT(T, INDEX); \
#define BPL_IMPL_FUNC_WRAPPER_GEN(z, index, DATA) \
static RT BOOST_PP_CAT(func_, index) ( \
BOOST_PYTHON_BINARY_ENUM( \
BOOST_PP_ADD(BOOST_PP_TUPLE_ELEM(3, 1, DATA), index), T, arg) \
BOOST_PP_ADD_D(1, BOOST_PP_TUPLE_ELEM(3, 1, DATA), index), T, arg) \
) \
{ \
BOOST_PP_TUPLE_ELEM(3, 2, DATA) \
BOOST_PP_TUPLE_ELEM(3, 0, DATA) \
( \
BOOST_PP_ENUM_PARAMS( \
BOOST_PP_ADD(BOOST_PP_TUPLE_ELEM(3, 1, DATA), index), \
BOOST_PP_ADD_D(1, BOOST_PP_TUPLE_ELEM(3, 1, DATA), index), \
arg \
) \
); \
@@ -83,7 +83,7 @@ struct func_stubs_base {};
( \
BOOST_PP_INC(N_DFLTS), \
BPL_IMPL_FUNC_WRAPPER_GEN, \
(FNAME, BOOST_PP_SUB(N_ARGS, N_DFLTS), RETURN) \
(FNAME, BOOST_PP_SUB_D(1, N_ARGS, N_DFLTS), RETURN) \
) \
}; \
}; \
@@ -92,14 +92,14 @@ struct func_stubs_base {};
#define BPL_IMPL_MEM_FUNC_WRAPPER_GEN(z, index, DATA) \
static RT BOOST_PP_CAT(func_, index) ( \
ClassT& obj BOOST_PP_COMMA_IF( \
BOOST_PP_ADD(BOOST_PP_TUPLE_ELEM(3, 1, DATA), index)) \
BOOST_PP_ADD_D(1, BOOST_PP_TUPLE_ELEM(3, 1, DATA), index)) \
BOOST_PYTHON_BINARY_ENUM( \
BOOST_PP_ADD(BOOST_PP_TUPLE_ELEM(3, 1, DATA), index), T, arg) \
BOOST_PP_ADD_D(1, BOOST_PP_TUPLE_ELEM(3, 1, DATA), index), T, arg) \
) \
{ \
BOOST_PP_TUPLE_ELEM(3, 2, DATA) obj.BOOST_PP_TUPLE_ELEM(3, 0, DATA)( \
BOOST_PP_ENUM_PARAMS( \
BOOST_PP_ADD(BOOST_PP_TUPLE_ELEM(3, 1, DATA), index), arg \
BOOST_PP_ADD_D(1, BOOST_PP_TUPLE_ELEM(3, 1, DATA), index), arg \
) \
); \
}
@@ -127,7 +127,7 @@ struct func_stubs_base {};
( \
BOOST_PP_INC(N_DFLTS), \
BPL_IMPL_MEM_FUNC_WRAPPER_GEN, \
(FNAME, BOOST_PP_SUB(N_ARGS, N_DFLTS), RETURN) \
(FNAME, BOOST_PP_SUB_D(1, N_ARGS, N_DFLTS), RETURN) \
) \
}; \
};
@@ -265,7 +265,7 @@ struct func_stubs_base {};
FNAME, \
GENERATOR_NAME, \
MAX_ARGS, \
BOOST_PP_SUB(MAX_ARGS, MIN_ARGS) \
BOOST_PP_SUB_D(1, MAX_ARGS, MIN_ARGS) \
)
#define BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(GENERATOR_NAME, FNAME, MIN_ARGS, MAX_ARGS) \
@@ -274,7 +274,7 @@ struct func_stubs_base {};
FNAME, \
GENERATOR_NAME, \
MAX_ARGS, \
BOOST_PP_SUB(MAX_ARGS, MIN_ARGS) \
BOOST_PP_SUB_D(1, MAX_ARGS, MIN_ARGS) \
)
// deprecated macro names (to be removed)

View File

@@ -22,7 +22,7 @@
make_tuple(BOOST_PYTHON_BINARY_ENUM(N, A, const& a))
{
tuple result((detail::new_reference)::PyTuple_New(N));
BOOST_PP_REPEAT(N, BOOST_PYTHON_MAKE_TUPLE_ARG, _)
BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_MAKE_TUPLE_ARG, _)
return result;
}

View File

@@ -96,7 +96,7 @@ struct returning<void>
, PyObject*, P const* policies)
{
// check that each of the arguments is convertible
BOOST_PP_REPEAT(N, BOOST_PYTHON_CHECK_CONVERSION, nil)
BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_CHECK_CONVERSION, nil)
// find the result converter
typedef typename P::result_converter result_converter;
@@ -104,7 +104,7 @@ struct returning<void>
if (!cr.convertible() || !policies->precall(args_))
return 0;
PyObject* result = cr(
(*pf)(BOOST_PP_REPEAT(N, BOOST_PYTHON_CALL_ARGS, nil))
(*pf)(BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_CALL_ARGS, nil))
);
return policies->postcall(args_, result);
}
@@ -117,11 +117,11 @@ struct returning<void>
, PyObject*, P const* policies)
{
// check that each of the arguments is convertible
BOOST_PP_REPEAT(N, BOOST_PYTHON_CHECK_CONVERSION, nil)
BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_CHECK_CONVERSION, nil)
if (!policies->precall(args_))
return 0;
(*pf)(BOOST_PP_REPEAT(N, BOOST_PYTHON_CALL_ARGS, nil));
(*pf)(BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_CALL_ARGS, nil));
return policies->postcall(args_, detail::none());
}
# endif // returning void / non-void
@@ -168,7 +168,7 @@ struct returning<void>
return 0;
// unroll a loop for the rest of them
BOOST_PP_REPEAT(N, BOOST_PYTHON_CHECK_CONVERSION, nil)
BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_CHECK_CONVERSION, nil)
// find the result converter
typedef typename P::result_converter result_converter;
@@ -177,7 +177,7 @@ struct returning<void>
return 0;
PyObject* result = cr(
((ct(PyTuple_GET_ITEM(args_, 0))).*pmf)(
BOOST_PP_REPEAT(N, BOOST_PYTHON_CALL_ARGS, nil))
BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_CALL_ARGS, nil))
);
return policies->postcall(args_, result);
}
@@ -196,13 +196,13 @@ struct returning<void>
return 0;
// unroll a loop for the rest of them
BOOST_PP_REPEAT(N, BOOST_PYTHON_CHECK_CONVERSION, nil)
BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_CHECK_CONVERSION, nil)
if (!policies->precall(args_))
return 0;
((ct(PyTuple_GET_ITEM(args_, 0))).*pmf)(
BOOST_PP_REPEAT(N, BOOST_PYTHON_CALL_ARGS, nil));
BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_CALL_ARGS, nil));
return policies->postcall(args_, detail::none());
}
# endif

View File

@@ -310,8 +310,8 @@ template <BOOST_PYTHON_TEMPLATE_TYPES>
struct init : detail::check_init_params<BOOST_PYTHON_TEMPLATE_ARGS>
{
typedef boost::mpl::type_list<T0> l0;
BOOST_PP_REPEAT
(BOOST_PP_DEC(BOOST_PYTHON_MAX_ARITY), BOOST_PYTHON_APPEND_TO_INIT, 0)
BOOST_PP_REPEAT_1ST(
BOOST_PP_DEC(BOOST_PYTHON_MAX_ARITY), BOOST_PYTHON_APPEND_TO_INIT, 0)
typedef BOOST_PP_CAT(l, BOOST_PP_DEC(BOOST_PYTHON_MAX_ARITY)) sequence;

View File

@@ -56,7 +56,7 @@ struct make_holder<N>
template <class Holder, class ArgList>
struct apply
{
BOOST_PP_REPEAT(N, BOOST_PYTHON_FORWARD_ARG, nil)
BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_FORWARD_ARG, nil)
static void execute(
PyObject* p
BOOST_PP_COMMA_IF(N) BOOST_PYTHON_BINARY_ENUM(N, t, a))
@@ -66,7 +66,7 @@ struct make_holder<N>
void* memory = Holder::allocate(p, offsetof(instance_t, storage), sizeof(Holder));
try {
(new (memory) Holder(
p BOOST_PP_REPEAT(N, BOOST_PYTHON_DO_FORWARD_ARG, nil)))->install(p);
p BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_DO_FORWARD_ARG, nil)))->install(p);
}
catch(...) {
Holder::deallocate(p, memory);

View File

@@ -131,7 +131,7 @@ void* pointer_holder_back_reference<Pointer, Value>::holds(type_info dst_t)
# endif
pointer_holder(PyObject* BOOST_PP_COMMA_IF(N) BOOST_PYTHON_BINARY_ENUM(N, A, a))
: m_p(new Value(
BOOST_PP_REPEAT(N, BOOST_PYTHON_UNFORWARD_LOCAL, nil)
BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_UNFORWARD_LOCAL, nil)
))
{}
@@ -149,7 +149,7 @@ void* pointer_holder_back_reference<Pointer, Value>::holds(type_info dst_t)
pointer_holder_back_reference(
PyObject* p BOOST_PP_COMMA_IF(N) BOOST_PYTHON_BINARY_ENUM(N, A, a))
: m_p(new held_type(
p BOOST_PP_COMMA_IF(N) BOOST_PP_REPEAT(N, BOOST_PYTHON_UNFORWARD_LOCAL, nil)
p BOOST_PP_COMMA_IF(N) BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_UNFORWARD_LOCAL, nil)
))
{}

View File

@@ -101,7 +101,7 @@ void* value_holder_back_reference<Held,BackReferenceType>::holds(
value_holder(
PyObject* BOOST_PP_COMMA_IF(N) BOOST_PYTHON_BINARY_ENUM(N, A, a))
: m_held(
BOOST_PP_REPEAT(N, BOOST_PYTHON_UNFORWARD_LOCAL, nil)
BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_UNFORWARD_LOCAL, nil)
)
{}
@@ -121,7 +121,7 @@ void* value_holder_back_reference<Held,BackReferenceType>::holds(
PyObject* p BOOST_PP_COMMA_IF(N) BOOST_PYTHON_BINARY_ENUM(N, A, a))
: m_held(
p BOOST_PP_COMMA_IF(N)
BOOST_PP_REPEAT(N, BOOST_PYTHON_UNFORWARD_LOCAL, nil)
BOOST_PP_REPEAT_1ST(N, BOOST_PYTHON_UNFORWARD_LOCAL, nil)
)
{
}