xcoll 0.3.3__py3-none-any.whl → 0.3.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of xcoll might be problematic. Click here for more details.
- xcoll/beam_elements/__init__.py +5 -0
- xcoll/beam_elements/absorber.py +2 -1
- xcoll/beam_elements/base.py +32 -17
- xcoll/beam_elements/collimators_src/absorber.h +5 -0
- xcoll/beam_elements/everest.py +14 -25
- xcoll/colldb.py +50 -27
- xcoll/general.py +1 -1
- xcoll/headers/checks.h +7 -1
- xcoll/impacts/impacts.py +2 -1
- xcoll/impacts/impacts_src/impacts.h +1 -6
- xcoll/manager.py +5 -5
- xcoll/rf_sweep.py +90 -19
- xcoll/scattering_routines/everest/__init__.py +5 -0
- xcoll/scattering_routines/everest/everest.py +1 -1
- xcoll/scattering_routines/fluka/build_fluka_input.py +58 -0
- xcoll/scattering_routines/fluka/flukaio/lib/libFlukaIO64.a +0 -0
- xcoll/scattering_routines/fluka/flukaio/lib/libFlukaIO64.so +0 -0
- xcoll/scattering_routines/fluka/flukaio/src/Connection.d +68 -48
- xcoll/scattering_routines/fluka/flukaio/src/Connection.o +0 -0
- xcoll/scattering_routines/fluka/flukaio/src/FlukaIO.d +46 -37
- xcoll/scattering_routines/fluka/flukaio/src/FlukaIO.o +0 -0
- xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.d +28 -25
- xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.o +0 -0
- xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer.d +67 -47
- xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer.o +0 -0
- xcoll/scattering_routines/fluka/flukaio/src/FortranFlukaIO.d +39 -33
- xcoll/scattering_routines/fluka/flukaio/src/FortranFlukaIO.o +0 -0
- xcoll/scattering_routines/fluka/flukaio/src/NetIO.d +66 -47
- xcoll/scattering_routines/fluka/flukaio/src/NetIO.o +0 -0
- {xcoll-0.3.3.dist-info → xcoll-0.3.5.dist-info}/METADATA +3 -2
- xcoll-0.3.5.dist-info/NOTICE +2 -0
- xcoll-0.3.5.dist-info/RECORD +111 -0
- {xcoll-0.3.3.dist-info → xcoll-0.3.5.dist-info}/WHEEL +1 -1
- xcoll/beam_elements/collimators_src/base_block.h +0 -14
- xcoll/beam_elements/collimators_src/base_collimator.h +0 -14
- xcoll/beam_elements/collimators_src/invalid_collimator.h +0 -15
- xcoll/install_collimators.py +0 -180
- xcoll/scattering_routines/geant4/collimasim/.git +0 -1
- xcoll/scattering_routines/geant4/collimasim/.gitignore +0 -12
- xcoll/scattering_routines/geant4/collimasim/.gitmodules +0 -3
- xcoll/scattering_routines/geant4/collimasim/CMakeLists.txt +0 -26
- xcoll/scattering_routines/geant4/collimasim/README.md +0 -21
- xcoll/scattering_routines/geant4/collimasim/docs/Makefile +0 -20
- xcoll/scattering_routines/geant4/collimasim/docs/make.bat +0 -35
- xcoll/scattering_routines/geant4/collimasim/docs/source/collimasim.rst +0 -10
- xcoll/scattering_routines/geant4/collimasim/docs/source/conf.py +0 -59
- xcoll/scattering_routines/geant4/collimasim/docs/source/index.rst +0 -26
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.appveyor.yml +0 -37
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-format +0 -19
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-tidy +0 -65
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.cmake-format.yaml +0 -73
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.git +0 -1
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CODEOWNERS +0 -9
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CONTRIBUTING.md +0 -386
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -45
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -8
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/dependabot.yml +0 -16
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler.yml +0 -8
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler_merged.yml +0 -3
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/pull_request_template.md +0 -19
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/ci.yml +0 -969
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/configure.yml +0 -84
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/format.yml +0 -48
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/labeler.yml +0 -16
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/pip.yml +0 -103
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.gitignore +0 -45
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.pre-commit-config.yaml +0 -151
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.readthedocs.yml +0 -3
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/CMakeLists.txt +0 -297
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/LICENSE +0 -29
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/MANIFEST.in +0 -6
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/README.rst +0 -180
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Doxyfile +0 -23
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Makefile +0 -192
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/_static/theme_overrides.css +0 -11
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/chrono.rst +0 -81
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/custom.rst +0 -93
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/eigen.rst +0 -310
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/functional.rst +0 -109
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/index.rst +0 -43
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/overview.rst +0 -171
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/stl.rst +0 -251
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/strings.rst +0 -305
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/classes.rst +0 -1297
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/embedding.rst +0 -262
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/exceptions.rst +0 -396
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/functions.rst +0 -568
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/misc.rst +0 -337
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/index.rst +0 -13
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/numpy.rst +0 -463
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/object.rst +0 -286
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/utilities.rst +0 -155
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/smart_ptrs.rst +0 -174
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/basics.rst +0 -308
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.py +0 -91
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.rst +0 -95
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/changelog.rst +0 -2050
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/classes.rst +0 -542
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/cmake/index.rst +0 -8
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/compiling.rst +0 -648
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/conf.py +0 -381
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/faq.rst +0 -343
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/index.rst +0 -48
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/installing.rst +0 -105
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/limitations.rst +0 -72
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11-logo.png +0 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.svg +0 -427
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.svg +0 -427
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/reference.rst +0 -130
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/release.rst +0 -96
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/requirements.txt +0 -8
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/upgrade.rst +0 -548
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/attr.h +0 -605
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/buffer_info.h +0 -144
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/cast.h +0 -1432
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/chrono.h +0 -213
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/common.h +0 -2
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/complex.h +0 -65
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/class.h +0 -709
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/common.h +0 -1021
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/descr.h +0 -104
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/init.h +0 -346
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/internals.h +0 -467
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/type_caster_base.h +0 -978
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/typeid.h +0 -55
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eigen.h +0 -606
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/embed.h +0 -284
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eval.h +0 -163
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/functional.h +0 -121
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/gil.h +0 -193
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/iostream.h +0 -275
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/numpy.h +0 -1741
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/operators.h +0 -163
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/options.h +0 -65
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pybind11.h +0 -2497
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pytypes.h +0 -1879
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl/filesystem.h +0 -103
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl.h +0 -375
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl_bind.h +0 -747
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/noxfile.py +0 -88
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__init__.py +0 -11
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__main__.py +0 -52
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.py +0 -12
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.pyi +0 -6
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/commands.py +0 -21
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/py.typed +0 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.py +0 -482
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.pyi +0 -63
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pyproject.toml +0 -41
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.cfg +0 -56
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.py +0 -155
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/CMakeLists.txt +0 -503
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/conftest.py +0 -208
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/constructor_stats.h +0 -275
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/cross_module_gil_utils.cpp +0 -73
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/env.py +0 -33
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/pytest.ini +0 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/test_files.py +0 -279
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/pytest.ini +0 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -143
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/local_bindings.h +0 -85
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/object.h +0 -179
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_cross_module_tests.cpp +0 -151
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.cpp +0 -91
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.h +0 -85
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pytest.ini +0 -19
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/requirements.txt +0 -12
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.cpp +0 -26
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.py +0 -25
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.cpp +0 -216
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.py +0 -163
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.cpp +0 -286
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.py +0 -536
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.cpp +0 -107
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.py +0 -248
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.cpp +0 -227
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.py +0 -202
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.cpp +0 -84
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.py +0 -210
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.cpp +0 -550
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.py +0 -473
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -84
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/embed.cpp +0 -21
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -28
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -39
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -46
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/main.cpp +0 -6
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -41
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -35
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -41
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/test.py +0 -10
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.cpp +0 -165
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.py +0 -53
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.cpp +0 -238
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.py +0 -126
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.cpp +0 -141
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.py +0 -117
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.cpp +0 -41
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.py +0 -50
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.cpp +0 -69
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.py +0 -42
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.cpp +0 -348
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.py +0 -771
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/CMakeLists.txt +0 -47
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/catch.cpp +0 -22
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/external_module.cpp +0 -23
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.cpp +0 -326
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.py +0 -15
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.cpp +0 -148
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.py +0 -272
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.cpp +0 -119
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.py +0 -51
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval_call.py +0 -5
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.cpp +0 -285
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.h +0 -12
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.py +0 -265
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.cpp +0 -397
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.py +0 -520
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.cpp +0 -49
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.py +0 -94
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.cpp +0 -125
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.py +0 -331
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.cpp +0 -153
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.py +0 -284
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.cpp +0 -107
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.py +0 -257
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.cpp +0 -412
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.py +0 -517
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.cpp +0 -102
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.py +0 -92
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.cpp +0 -233
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.py +0 -360
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.cpp +0 -472
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.py +0 -593
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.cpp +0 -524
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.py +0 -441
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.cpp +0 -103
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.py +0 -267
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.cpp +0 -73
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.py +0 -59
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.cpp +0 -235
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.py +0 -146
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.cpp +0 -189
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.py +0 -82
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.cpp +0 -560
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.py +0 -651
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.cpp +0 -500
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.py +0 -253
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.cpp +0 -452
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.py +0 -318
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.cpp +0 -342
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.py +0 -291
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.cpp +0 -131
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.py +0 -318
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.cpp +0 -144
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.py +0 -29
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.cpp +0 -66
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.py +0 -44
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.cpp +0 -22
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.py +0 -9
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.cpp +0 -510
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.py +0 -408
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-numpy-scipy.supp +0 -140
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-python.supp +0 -117
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindCatch.cmake +0 -70
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindEigen3.cmake +0 -86
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindPythonLibsNew.cmake +0 -257
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/check-style.sh +0 -44
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/cmake_uninstall.cmake.in +0 -23
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/libsize.py +0 -39
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/make_changelog.py +0 -64
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Common.cmake +0 -402
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Config.cmake.in +0 -233
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11NewTools.cmake +0 -276
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Tools.cmake +0 -214
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pyproject.toml +0 -3
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_global.py.in +0 -65
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_main.py.in +0 -41
- xcoll/scattering_routines/geant4/collimasim/pyproject.toml +0 -8
- xcoll/scattering_routines/geant4/collimasim/setup.py +0 -144
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.cpp +0 -403
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.hh +0 -100
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.cpp +0 -662
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.hh +0 -110
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/__init__.py +0 -8
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/bindings.cpp +0 -63
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/pyCollimatorPass.py +0 -142
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/xtrack_collimator.py +0 -475
- xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/PKG-INFO +0 -6
- xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/SOURCES.txt +0 -20
- xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/dependency_links.txt +0 -1
- xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/not-zip-safe +0 -1
- xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/top_level.txt +0 -1
- xcoll/scattering_routines/geant4/collimasim/tests/README.md +0 -25
- xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_new_example.dat +0 -18
- xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_old_example.dat +0 -68
- xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_testing.dat +0 -15
- xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_yaml_example.yaml +0 -110
- xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps.dat +0 -7
- xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps_pyat_test.dat +0 -3
- xcoll/scattering_routines/geant4/collimasim/tests/resources/collonly_twiss_file_example.tfs +0 -54
- xcoll/scattering_routines/geant4/collimasim/tests/resources/settings.gmad +0 -3
- xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_black_absorber.gmad +0 -3
- xcoll/scattering_routines/geant4/collimasim/tests/resources/twiss_file_testing.tfs +0 -51
- xcoll/scattering_routines/geant4/collimasim/tests/test_pyat.py +0 -65
- xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_passmethod.py +0 -59
- xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_tracking.py +0 -102
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack.py +0 -75
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_angle.py +0 -74
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_colldb_load.py +0 -84
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction.py +0 -159
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tilt.py +0 -80
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking.py +0 -97
- xcoll-0.3.3.dist-info/RECORD +0 -391
- {xcoll-0.3.3.dist-info → xcoll-0.3.5.dist-info}/LICENSE +0 -0
|
@@ -1,305 +0,0 @@
|
|
|
1
|
-
Strings, bytes and Unicode conversions
|
|
2
|
-
######################################
|
|
3
|
-
|
|
4
|
-
.. note::
|
|
5
|
-
|
|
6
|
-
This section discusses string handling in terms of Python 3 strings. For
|
|
7
|
-
Python 2.7, replace all occurrences of ``str`` with ``unicode`` and
|
|
8
|
-
``bytes`` with ``str``. Python 2.7 users may find it best to use ``from
|
|
9
|
-
__future__ import unicode_literals`` to avoid unintentionally using ``str``
|
|
10
|
-
instead of ``unicode``.
|
|
11
|
-
|
|
12
|
-
Passing Python strings to C++
|
|
13
|
-
=============================
|
|
14
|
-
|
|
15
|
-
When a Python ``str`` is passed from Python to a C++ function that accepts
|
|
16
|
-
``std::string`` or ``char *`` as arguments, pybind11 will encode the Python
|
|
17
|
-
string to UTF-8. All Python ``str`` can be encoded in UTF-8, so this operation
|
|
18
|
-
does not fail.
|
|
19
|
-
|
|
20
|
-
The C++ language is encoding agnostic. It is the responsibility of the
|
|
21
|
-
programmer to track encodings. It's often easiest to simply `use UTF-8
|
|
22
|
-
everywhere <http://utf8everywhere.org/>`_.
|
|
23
|
-
|
|
24
|
-
.. code-block:: c++
|
|
25
|
-
|
|
26
|
-
m.def("utf8_test",
|
|
27
|
-
[](const std::string &s) {
|
|
28
|
-
cout << "utf-8 is icing on the cake.\n";
|
|
29
|
-
cout << s;
|
|
30
|
-
}
|
|
31
|
-
);
|
|
32
|
-
m.def("utf8_charptr",
|
|
33
|
-
[](const char *s) {
|
|
34
|
-
cout << "My favorite food is\n";
|
|
35
|
-
cout << s;
|
|
36
|
-
}
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
.. code-block:: pycon
|
|
40
|
-
|
|
41
|
-
>>> utf8_test("🎂")
|
|
42
|
-
utf-8 is icing on the cake.
|
|
43
|
-
🎂
|
|
44
|
-
|
|
45
|
-
>>> utf8_charptr("🍕")
|
|
46
|
-
My favorite food is
|
|
47
|
-
🍕
|
|
48
|
-
|
|
49
|
-
.. note::
|
|
50
|
-
|
|
51
|
-
Some terminal emulators do not support UTF-8 or emoji fonts and may not
|
|
52
|
-
display the example above correctly.
|
|
53
|
-
|
|
54
|
-
The results are the same whether the C++ function accepts arguments by value or
|
|
55
|
-
reference, and whether or not ``const`` is used.
|
|
56
|
-
|
|
57
|
-
Passing bytes to C++
|
|
58
|
-
--------------------
|
|
59
|
-
|
|
60
|
-
A Python ``bytes`` object will be passed to C++ functions that accept
|
|
61
|
-
``std::string`` or ``char*`` *without* conversion. On Python 3, in order to
|
|
62
|
-
make a function *only* accept ``bytes`` (and not ``str``), declare it as taking
|
|
63
|
-
a ``py::bytes`` argument.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
Returning C++ strings to Python
|
|
67
|
-
===============================
|
|
68
|
-
|
|
69
|
-
When a C++ function returns a ``std::string`` or ``char*`` to a Python caller,
|
|
70
|
-
**pybind11 will assume that the string is valid UTF-8** and will decode it to a
|
|
71
|
-
native Python ``str``, using the same API as Python uses to perform
|
|
72
|
-
``bytes.decode('utf-8')``. If this implicit conversion fails, pybind11 will
|
|
73
|
-
raise a ``UnicodeDecodeError``.
|
|
74
|
-
|
|
75
|
-
.. code-block:: c++
|
|
76
|
-
|
|
77
|
-
m.def("std_string_return",
|
|
78
|
-
[]() {
|
|
79
|
-
return std::string("This string needs to be UTF-8 encoded");
|
|
80
|
-
}
|
|
81
|
-
);
|
|
82
|
-
|
|
83
|
-
.. code-block:: pycon
|
|
84
|
-
|
|
85
|
-
>>> isinstance(example.std_string_return(), str)
|
|
86
|
-
True
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
Because UTF-8 is inclusive of pure ASCII, there is never any issue with
|
|
90
|
-
returning a pure ASCII string to Python. If there is any possibility that the
|
|
91
|
-
string is not pure ASCII, it is necessary to ensure the encoding is valid
|
|
92
|
-
UTF-8.
|
|
93
|
-
|
|
94
|
-
.. warning::
|
|
95
|
-
|
|
96
|
-
Implicit conversion assumes that a returned ``char *`` is null-terminated.
|
|
97
|
-
If there is no null terminator a buffer overrun will occur.
|
|
98
|
-
|
|
99
|
-
Explicit conversions
|
|
100
|
-
--------------------
|
|
101
|
-
|
|
102
|
-
If some C++ code constructs a ``std::string`` that is not a UTF-8 string, one
|
|
103
|
-
can perform a explicit conversion and return a ``py::str`` object. Explicit
|
|
104
|
-
conversion has the same overhead as implicit conversion.
|
|
105
|
-
|
|
106
|
-
.. code-block:: c++
|
|
107
|
-
|
|
108
|
-
// This uses the Python C API to convert Latin-1 to Unicode
|
|
109
|
-
m.def("str_output",
|
|
110
|
-
[]() {
|
|
111
|
-
std::string s = "Send your r\xe9sum\xe9 to Alice in HR"; // Latin-1
|
|
112
|
-
py::str py_s = PyUnicode_DecodeLatin1(s.data(), s.length());
|
|
113
|
-
return py_s;
|
|
114
|
-
}
|
|
115
|
-
);
|
|
116
|
-
|
|
117
|
-
.. code-block:: pycon
|
|
118
|
-
|
|
119
|
-
>>> str_output()
|
|
120
|
-
'Send your résumé to Alice in HR'
|
|
121
|
-
|
|
122
|
-
The `Python C API
|
|
123
|
-
<https://docs.python.org/3/c-api/unicode.html#built-in-codecs>`_ provides
|
|
124
|
-
several built-in codecs.
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
One could also use a third party encoding library such as libiconv to transcode
|
|
128
|
-
to UTF-8.
|
|
129
|
-
|
|
130
|
-
Return C++ strings without conversion
|
|
131
|
-
-------------------------------------
|
|
132
|
-
|
|
133
|
-
If the data in a C++ ``std::string`` does not represent text and should be
|
|
134
|
-
returned to Python as ``bytes``, then one can return the data as a
|
|
135
|
-
``py::bytes`` object.
|
|
136
|
-
|
|
137
|
-
.. code-block:: c++
|
|
138
|
-
|
|
139
|
-
m.def("return_bytes",
|
|
140
|
-
[]() {
|
|
141
|
-
std::string s("\xba\xd0\xba\xd0"); // Not valid UTF-8
|
|
142
|
-
return py::bytes(s); // Return the data without transcoding
|
|
143
|
-
}
|
|
144
|
-
);
|
|
145
|
-
|
|
146
|
-
.. code-block:: pycon
|
|
147
|
-
|
|
148
|
-
>>> example.return_bytes()
|
|
149
|
-
b'\xba\xd0\xba\xd0'
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
Note the asymmetry: pybind11 will convert ``bytes`` to ``std::string`` without
|
|
153
|
-
encoding, but cannot convert ``std::string`` back to ``bytes`` implicitly.
|
|
154
|
-
|
|
155
|
-
.. code-block:: c++
|
|
156
|
-
|
|
157
|
-
m.def("asymmetry",
|
|
158
|
-
[](std::string s) { // Accepts str or bytes from Python
|
|
159
|
-
return s; // Looks harmless, but implicitly converts to str
|
|
160
|
-
}
|
|
161
|
-
);
|
|
162
|
-
|
|
163
|
-
.. code-block:: pycon
|
|
164
|
-
|
|
165
|
-
>>> isinstance(example.asymmetry(b"have some bytes"), str)
|
|
166
|
-
True
|
|
167
|
-
|
|
168
|
-
>>> example.asymmetry(b"\xba\xd0\xba\xd0") # invalid utf-8 as bytes
|
|
169
|
-
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xba in position 0: invalid start byte
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
Wide character strings
|
|
173
|
-
======================
|
|
174
|
-
|
|
175
|
-
When a Python ``str`` is passed to a C++ function expecting ``std::wstring``,
|
|
176
|
-
``wchar_t*``, ``std::u16string`` or ``std::u32string``, the ``str`` will be
|
|
177
|
-
encoded to UTF-16 or UTF-32 depending on how the C++ compiler implements each
|
|
178
|
-
type, in the platform's native endianness. When strings of these types are
|
|
179
|
-
returned, they are assumed to contain valid UTF-16 or UTF-32, and will be
|
|
180
|
-
decoded to Python ``str``.
|
|
181
|
-
|
|
182
|
-
.. code-block:: c++
|
|
183
|
-
|
|
184
|
-
#define UNICODE
|
|
185
|
-
#include <windows.h>
|
|
186
|
-
|
|
187
|
-
m.def("set_window_text",
|
|
188
|
-
[](HWND hwnd, std::wstring s) {
|
|
189
|
-
// Call SetWindowText with null-terminated UTF-16 string
|
|
190
|
-
::SetWindowText(hwnd, s.c_str());
|
|
191
|
-
}
|
|
192
|
-
);
|
|
193
|
-
m.def("get_window_text",
|
|
194
|
-
[](HWND hwnd) {
|
|
195
|
-
const int buffer_size = ::GetWindowTextLength(hwnd) + 1;
|
|
196
|
-
auto buffer = std::make_unique< wchar_t[] >(buffer_size);
|
|
197
|
-
|
|
198
|
-
::GetWindowText(hwnd, buffer.data(), buffer_size);
|
|
199
|
-
|
|
200
|
-
std::wstring text(buffer.get());
|
|
201
|
-
|
|
202
|
-
// wstring will be converted to Python str
|
|
203
|
-
return text;
|
|
204
|
-
}
|
|
205
|
-
);
|
|
206
|
-
|
|
207
|
-
.. warning::
|
|
208
|
-
|
|
209
|
-
Wide character strings may not work as described on Python 2.7 or Python
|
|
210
|
-
3.3 compiled with ``--enable-unicode=ucs2``.
|
|
211
|
-
|
|
212
|
-
Strings in multibyte encodings such as Shift-JIS must transcoded to a
|
|
213
|
-
UTF-8/16/32 before being returned to Python.
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
Character literals
|
|
217
|
-
==================
|
|
218
|
-
|
|
219
|
-
C++ functions that accept character literals as input will receive the first
|
|
220
|
-
character of a Python ``str`` as their input. If the string is longer than one
|
|
221
|
-
Unicode character, trailing characters will be ignored.
|
|
222
|
-
|
|
223
|
-
When a character literal is returned from C++ (such as a ``char`` or a
|
|
224
|
-
``wchar_t``), it will be converted to a ``str`` that represents the single
|
|
225
|
-
character.
|
|
226
|
-
|
|
227
|
-
.. code-block:: c++
|
|
228
|
-
|
|
229
|
-
m.def("pass_char", [](char c) { return c; });
|
|
230
|
-
m.def("pass_wchar", [](wchar_t w) { return w; });
|
|
231
|
-
|
|
232
|
-
.. code-block:: pycon
|
|
233
|
-
|
|
234
|
-
>>> example.pass_char("A")
|
|
235
|
-
'A'
|
|
236
|
-
|
|
237
|
-
While C++ will cast integers to character types (``char c = 0x65;``), pybind11
|
|
238
|
-
does not convert Python integers to characters implicitly. The Python function
|
|
239
|
-
``chr()`` can be used to convert integers to characters.
|
|
240
|
-
|
|
241
|
-
.. code-block:: pycon
|
|
242
|
-
|
|
243
|
-
>>> example.pass_char(0x65)
|
|
244
|
-
TypeError
|
|
245
|
-
|
|
246
|
-
>>> example.pass_char(chr(0x65))
|
|
247
|
-
'A'
|
|
248
|
-
|
|
249
|
-
If the desire is to work with an 8-bit integer, use ``int8_t`` or ``uint8_t``
|
|
250
|
-
as the argument type.
|
|
251
|
-
|
|
252
|
-
Grapheme clusters
|
|
253
|
-
-----------------
|
|
254
|
-
|
|
255
|
-
A single grapheme may be represented by two or more Unicode characters. For
|
|
256
|
-
example 'é' is usually represented as U+00E9 but can also be expressed as the
|
|
257
|
-
combining character sequence U+0065 U+0301 (that is, the letter 'e' followed by
|
|
258
|
-
a combining acute accent). The combining character will be lost if the
|
|
259
|
-
two-character sequence is passed as an argument, even though it renders as a
|
|
260
|
-
single grapheme.
|
|
261
|
-
|
|
262
|
-
.. code-block:: pycon
|
|
263
|
-
|
|
264
|
-
>>> example.pass_wchar("é")
|
|
265
|
-
'é'
|
|
266
|
-
|
|
267
|
-
>>> combining_e_acute = "e" + "\u0301"
|
|
268
|
-
|
|
269
|
-
>>> combining_e_acute
|
|
270
|
-
'é'
|
|
271
|
-
|
|
272
|
-
>>> combining_e_acute == "é"
|
|
273
|
-
False
|
|
274
|
-
|
|
275
|
-
>>> example.pass_wchar(combining_e_acute)
|
|
276
|
-
'e'
|
|
277
|
-
|
|
278
|
-
Normalizing combining characters before passing the character literal to C++
|
|
279
|
-
may resolve *some* of these issues:
|
|
280
|
-
|
|
281
|
-
.. code-block:: pycon
|
|
282
|
-
|
|
283
|
-
>>> example.pass_wchar(unicodedata.normalize("NFC", combining_e_acute))
|
|
284
|
-
'é'
|
|
285
|
-
|
|
286
|
-
In some languages (Thai for example), there are `graphemes that cannot be
|
|
287
|
-
expressed as a single Unicode code point
|
|
288
|
-
<http://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries>`_, so there is
|
|
289
|
-
no way to capture them in a C++ character type.
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
C++17 string views
|
|
293
|
-
==================
|
|
294
|
-
|
|
295
|
-
C++17 string views are automatically supported when compiling in C++17 mode.
|
|
296
|
-
They follow the same rules for encoding and decoding as the corresponding STL
|
|
297
|
-
string type (for example, a ``std::u16string_view`` argument will be passed
|
|
298
|
-
UTF-16-encoded data, and a returned ``std::string_view`` will be decoded as
|
|
299
|
-
UTF-8).
|
|
300
|
-
|
|
301
|
-
References
|
|
302
|
-
==========
|
|
303
|
-
|
|
304
|
-
* `The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) <https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/>`_
|
|
305
|
-
* `C++ - Using STL Strings at Win32 API Boundaries <https://msdn.microsoft.com/en-ca/magazine/mt238407.aspx>`_
|