callbacks.py

来自「Boost provides free peer-reviewed portab」· Python 代码 · 共 148 行

PY
148
字号
# Copyright David Abrahams 2004. Distributed under the Boost# Software License, Version 1.0. (See accompanying# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)'''>>> from callbacks_ext import *>>> def double(x):...     return x + x...>>> apply_int_int(double, 42)84>>> apply_void_int(double, 42)>>> def identity(x):...     return xOnce we have array conversion support, this test will fail. Er,succeed<wink>:>>> try: apply_to_string_literal(identity)... except ReferenceError: pass # expected... else: print 'expected an exception!'>>> try: apply_X_ref_handle(lambda ignored:X(42), None)... except ReferenceError: pass # expected... else: print 'expected an exception!'>>> x = X(42)>>> x.y = X(7)>>> apply_X_ref_handle(lambda z:z.y, x).value()7>>> x = apply_X_X(identity, X(42))>>> x.value()42>>> x_count()1>>> del x>>> x_count()0>>> def increment(x):...     x.set(x.value() + 1)...>>> x = X(42)>>> apply_void_X_ref(increment, x)>>> x.value()43>>> apply_void_X_cref(increment, x) >>> x.value()  # const-ness is not respected, sorry!44>>> last_x = 1>>> def decrement(x):...     global last_x...     last_x = x...     if x is not None:...         x.set(x.value() - 1)>>> apply_void_X_ptr(decrement, x)>>> x.value()43>>> last_x.value()43>>> increment(last_x)>>> x.value()44>>> last_x.value()44>>> apply_void_X_ptr(decrement, None)>>> assert last_x is None>>> x.value()44>>> last_x = 1>>> apply_void_X_deep_ptr(decrement, None)>>> assert last_x is None>>> x.value()44>>> apply_void_X_deep_ptr(decrement, x)>>> x.value()44>>> last_x.value()43>>> y = apply_X_ref_handle(identity, x)>>> assert y.value() == x.value()>>> increment(x)>>> assert y.value() == x.value()>>> y = apply_X_ptr_handle_cref(identity, x)>>> assert y.value() == x.value()>>> increment(x)>>> assert y.value() == x.value()>>> y = apply_X_ptr_handle_cref(identity, None)>>> y>>> def new_x(ignored):...     return X(666)...>>> try: apply_X_ref_handle(new_x, 1)... except ReferenceError: pass... else: print 'no error'>>> try: apply_X_ptr_handle_cref(new_x, 1)... except ReferenceError: pass... else: print 'no error'>>> try: apply_cstring_cstring(identity, 'hello')... except ReferenceError: pass... else: print 'no error'>>> apply_char_char(identity, 'x')'x'>>> apply_cstring_pyobject(identity, 'hello')'hello'>>> apply_cstring_pyobject(identity, None)>>> apply_char_char(identity, 'x')'x'>>> assert apply_to_own_type(identity) is type(identity)>>> assert apply_object_object(identity, identity) is identity'''def run(args = None):    import sys    import doctest    if args is not None:        sys.argv = args    return doctest.testmod(sys.modules.get(__name__))    if __name__ == '__main__':    print "running..."    import sys    status = run()[0]    if (status == 0): print "Done."    sys.exit(status)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?