asbind20: C++20 AngelScript binding library
===========================================
**asbind20** is a C++20 `AngelScript `_ binding library powered by templates.
Although the interface of AngelScript is very friendly to C++ compared to most binding APIs from other script languages,
it still needs many additional proxy functions, e.g., when binding a constructor.
However, most of these proxies have similar logic, so they can be generated by some template tricks.
Besides, this library provides tools for easily calling a script function,
as well as RAII helpers for managing lifetime of AngelScript objects.
In general, this library aims to automate everything that can be generated by template meta-programming.
The name and API design are inspired by the famous `pybind11 library `_.
Core Features
-------------
- Conveniently bind C++ functions / classes to AngelScript,
including auto-generated wrappers for constructors / factories / operators.
- Tools for passing arguments to and receiving return value from script functions,
without manually choosing the correct function for different types.
- Generating a generic wrapper for functions of any parameter count at compile-time,
without using any macro.
- RAII tools for managing lifetime of script objects.
- Container for storing script objects.
License
-------
This library is licensed under `the MIT License `_.
Contents:
.. toctree::
:maxdepth: 1
changelog
.. toctree::
:maxdepth: 2
:caption: Getting Started
start
.. toctree::
:maxdepth: 2
:caption: Registering Application Interfaces
object_type
global
aux_interface
.. toctree::
:maxdepth: 2
:caption: Using AngelScript Interfaces
invoke
container
compare
.. toctree::
:maxdepth: 1
:caption: Utilities
utility
.. toctree::
:maxdepth: 1
:caption: Advanced Topics
advanced/custom_conv_rule
advanced/init_list
advanced/script_type
advanced/gc
advanced/generic
advanced/threading
.. toctree::
:maxdepth: 1
:caption: Extra Resources
extra/troubleshooting
extra/known_issue
contribute/full_build