libsigc++ es una biblioteca de C++ para funciones de devolución de llamada con tipado seguro .
libsigc++ implementa un sistema de devolución de llamada para su uso en interfaces abstractas y programación general. libsigc++ es una de las primeras implementaciones del concepto de señales y ranuras , implementada mediante metaprogramación con plantillas de C++ . Se creó como alternativa al uso de un metacompilador, como el que se encuentra en la implementación de señales y ranuras de Qt . libsigc++ se originó como parte del proyecto gtkmm en 1997 y posteriormente se reescribió como una biblioteca independiente. Cada señal tiene un perfil de función particular que designa el número de argumentos y el tipo de argumento asociado con la devolución de llamada. Las funciones y los métodos se encapsulan mediante llamadas a plantillas para producir objetos de función (functores) que pueden vincularse a una señal. Cada señal puede conectarse a múltiples functores, creando así un patrón observador a través del cual se puede distribuir un mensaje a múltiples objetos oyentes anónimos. Se utilizó un seguimiento del ciclo de vida de los objetos basado en el conteo de referencias para desconectar los functores de las señales cuando se eliminan los objetos. El uso de plantillas permitió la verificación de tipos seguros en tiempo de compilación de las conexiones. La incorporación de esta estricta comprobación en tiempo de compilación requirió la adición de adaptadores de conversión de tipos de plantilla que transforman el perfil de devolución de llamada del functor para que coincida con el patrón de señal requerido.
libsigc++ fue una extensión natural de los functores de la biblioteca estándar de C++ para el seguimiento de objetos necesario para implementar el patrón observador. Inspiró múltiples implementaciones de señales y ranuras basadas en plantillas de C++, incluida la implementación de señales utilizada en las bibliotecas boost C++ .
libsigc++ se distribuye como software libre bajo la Licencia Pública General Reducida de GNU (LGPL).
Referencias
Enlaces externos
- Bibliotecas de C++
- Herramientas de programación informática