edya
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.
“Lucho++
”, como es el nombre de la biblioteca, es en realidad un conjunto de paquetes, que cubren cuatro funcionalidades específicas:
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 como STL
o Boost
, en que estructuras
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.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 (como max
/min
, o las implementaciones de pow
) 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.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 a POSIX
.tiempo
, que contiene estructuras y enfoque de clase para la representación def fechas y horas; inicialmente un wrapper sobre la estructura estándar struct 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).
C++
soportados:Opcionales:
La documentación está disponible como un paquete separado (lpp-docs
), disponible en dos formatos: HTML y manpages, generados con DOxygen.
Enero de 2007
edya