edya
Biblioteca C++ de Lucho
Este es un proyecto que nació hacia el año 2001
, durante mi curso de Estructuras de Datos y Algoritmos. Es un conjunto de bibliotecas, clases y estructuras en C++, para estandaizar el desarrollo de mis programas, usando un conjunto homogéneo de utilidades (aparte de las bibliotecas STL
y WxWidgets
).
El proyecto fue más que nada de uso personal hasta 2003, en que dejé el lenguaje C++ para preocuparme de otros lenguajes como PHP y Javascript. Sin embargo, cuando desde 2009 decidí regresar a C++ y me encontré con muchos cambios|Apache Wiki:C++|fetchname="tooltip"|doa| que prácticamente llevan a un nuevo lenguaje, decidí reimplementar las partes más básicas de la biblioteca y liberarlas.
La biblioteca en sí se compone de tres partes: snippets y fragmentos de código misceláneos que componen mi toolbox (como la implementación de popen2 que está en Public Domain), envoltorios y encapsuladores como map_keys_iterator
), y tres bibliotecas mayores de amplio espectro que he creado: Natural, exec y basenum.
La biblioteca estará disponible para descarga, por el momento estoy afinando la interface y generando una documentación en HTML gracias a Doxygen. Si encuentro la manera de convertir esa documentación a DokuWiki, será genial.
- Natural.
- basenum.
- slstring (string literals wrapper).
- q2i (complex i/o streams manipulator)
Estructura
“Lucho++
”, como es el nombre de la biblioteca, es en realidad un conjunto de paquetes, que cubren cuatro funcionalidades específicas:
- el paquete
estructuras
1) que contiene definiciones, clases y protocolos implementando varios de los conceptos del mis cursos de estructuras de datos y complejidad computacional, como: pilas, colas, listas auto-ordenadas, gestión de intervalos, bimapas, etc…; radicando la principal diferencia de otras bibliotecas genéricas comoSTL
oBoost
, en queestructuras
hace un uso básico de plantillas y programación genérica, para proveer una implementación simple sin pasar a las complicaciones de notación y de iteradores en las que caen las plantillas de la STL. - el paquete
matematica
que contiene definiciones que tuve que implementar para estandarizar el desarrollo cuando se usan funciones matemáticas y macros que cambian de compilador en compilador (comomax
/min
, o las implementaciones depow
) y para entregar un enfoque de clases a algunos conceptos que no están apropiadamente abordados en otras bibliotecas genéricas, como: implementación de fracciones, notación de ángulos, E/S de números grandes, contadores auto-gestionados y funciones de matemáticas discretas. - el paquete
iomanip
, que contiene cuatro vistas de clase para algunas operaciones de E/S cuya finalidad era proveer compatibilidad con la E/S de lenguajes como BASIC, que tratan de forma diferente las cadenas de texto y los delimitadores de campos; además de proveer una generalización de E/S para recibir pulsaciones simples de teclas y modificadores en sistemas conformantes aPOSIX
. - el paquete
tiempo
, que contiene estructuras y enfoque de clase para la representación def fechas y horas; inicialmente un wrapper sobre la estructura estándarstruct tm
, luego evolucionó para convertirse en un sistema de representación práctivo y liviano, independiente de las nacionalizaciones (locales), y lo más conforme posible al estándar ISO 8601 para representación de fechas, horas e intervalos de tiempo, además de promover la eficiencia usando sólo aritmética de enteros.
Todo esto ha sido programado inicialmente en C++ estándar del 2003 (ANSI/IEEC
), y ha ido poco a poco progresando para conformar a los enfoques del estándar C++0X
(2002-200X).
Dependencias
- Compiladores de
C++
soportados:- gcc 4.2 o superior con TR1 configurado (o alternativamente Boost.TR1).
- Intel C++ Compiler 11 (Linux).
Opcionales:
- Los siguientes componentes de Boost:
- Boost.TR1.
- Boost.Tribool
- Boost.Foreach
Descarga
Documentación
La documentación está disponible como un paquete separado (lpp-docs
), disponible en dos formatos: HTML y manpages, generados con DOxygen.
Revisión Más Reciente
Enero de 2007