AngelScript

Dynamic configurations

AngelScript supports the concept for configuration groups. This can be used for example by application plug-ins that wish to register their own interface with the script engine. When the plug-in is later removed, the configuration group for that plug-in can also be removed from the AngelScript interface without having to reinitialize everything.

To register part of the interface in a configuration group, the registration should be done between calls to BeginConfigGroup and EndConfigGroup. This can be done as many times as desired, but groups cannot be nested.

To remove a configuration group the method RemoveConfigGroup should be called with the name given to the BeginConfigGroup. It is only possible to remove a config group that is not currently in use. Possible causes that prevents the removal of a group may be:

- Another registered a function outside the group uses a type from the group
- A script is currently built that uses a type or function from the group
- An instance of a script object that uses a type or function from the group is alive

It can be difficult to determine exactly where the use comes from so here's a few steps to do when RemoveConfigGroup returns asCONFIG_GROUP_IS_IN_USE.

- Run a full cycle on the garbage collector to destroy lingering objects
- Discard any module that may have been compiled with the group
- Double check that no other group uses the entities from the group