CommonLib 7.0

Biblioteka CommonLib
Wersja: 7.0
Data: 3 listopada 2007

Wstęp

CommonLib to uniwersalna biblioteka dla C++ zawierająca różnorodne elementy. Powstała przy okazji pisania silnika graficznego i różnych innych moich projektów. Obecna wersja jest pisana od wakacji 2006.

Właściwie od dziecka, odkąd tylko zacząłem programować (wtedy to był jeszcze Turbo Pascal pod DOS) zawsze rozwijałem jakąś swoją bibliotekę modułów bazowych, z którymi potem nigdy się nie rozstawałem pisząc swoje projekty. Teraz uważam, że nadal jest to potrzebne - szczególnie w C++, którego biblioteka standardowa - w przeciwieństwie do nowoczesnych języków i środowisk programowania takich jak Delphi, C# czy Java - jest bardzo uboga, a to co zawiera pozostawia wiele do życzenia.

Cechy i założenia

Jak użyć

Biblioteki można użyć na trzy sposoby:

  1. Skompilować całą jako bibliotekę statyczną LIB, ustawić ścieżki do pliku LIB i plików HPP w swoim środowisku programowania i używać jako biblioteki.
  2. Skopiować wszystkie lub wybrane moduły do źródeł swojego projektu.
  3. Skopiować do źródeł swojego projektu wybrane funkcje i klasy.

Składniki i możliwości

Moduł Base

Moduł podstawowy

» Base.hpp - nagłówek
» Base.txt - dokumentacja

Moduł Config

Obsługa plików konfiguracyjnych

» Config.hpp - nagłówek
» Config.txt - dokumentacja

Obsługuje hierarchiczne pliki konfiguracyjne o składni wzorowanej na C/C++.

Moduł DateTime

Data i czas

» DateTime.hpp - nagłówek
» DateTime.txt - dokumentacja

Moduł Dator

Otoczka na pojedynczą wartość dowolnego typu

» Dator.hpp - nagłówek
» Dator.txt - dokumentacja

Moduł Error

Klasy wyjątków do obsługi błędów

» Error.hpp - nagłówek
» Error.txt - dokumentacja

Moduł Files

Obsługa plików i systemu plików

» Files.hpp - nagłówek
» Files.txt - dokumentacja

Moduł FreeList

Bardzo szybki alokator pamięci

» FreeList.hpp - nagłówek
» FreeList.txt - dokumentacja

Szablony klas FreeList oraz DynamicFreeList. Obiekty tych klas to napisane we własnym zakresie alokatory przeznaczone do alokowania dużych ilości zmiennych jednego wybranego typu, które działają znacząco szybciej niż standardowe operatory new i delete.

Moduł Logger

Mechanizm logowania komunikatów

» Logger.hpp - nagłówek
» Logger.txt - dokumentacja

Moduł Math

Moduł matematyczny

» Math.hpp - nagłówek
» Math.txt - dokumentacja

Moduł Profiler

Przyrząd do pomiarów czasu i wydajności

» Profiler.hpp - nagłówek
» Profiler.txt - dokumentacja

Moduł Stream

Hierarchia klas strumieni

» Stream.hpp - nagłówek
» Stream.txt - dokumentacja

Moduł Threads

Biblioteka do wielowątkowości i synchronizacji

» Threads.hpp - nagłówek
» Threads.txt - dokumentacja

Moduł Tokenizer

Parser składni języka podobnego do C/C++

» Tokenizer.hpp - nagłówek
» Tokenizer.txt - dokumentacja

Moduł ZlibUtils

Moduł wspmagający biblioteki zlib

» ZlibUtils.hpp - nagłówek
» ZlibUtils.txt - dokumentacja

Mini FAQ

Skąd taka nazwa?

W moim głównym kodzie, z którego biblioteka się wywodzi, mam w Visual C++ w Solution szereg projektów. Jednym z nich jest silnik graficzny, innym pomocnicze narzędzie konsolowe czy program testujący. Kod wspólny dla wszystkich projektów zgromadziłem w katalogu, który nazwałem Common i tak już zostało.

Skąd taka wersja?

Faktycznie nie było CommonLib 4 czy 5, a wersja 6.1 była tak różna od 6.0, że powinna się nazywać 7.0. Jednak chciałem zrównać numerację biblioteki z numeracją mojego głównego projektu - silnika graficznego, na potrzeby którego napisałem tą bibliotekę.

Co nowego?

Wersja 7.0 (3 listopada 2007)

Biblioteka była przez ostatnie miesiące uzupełniana i poprawiana na bieżąco wraz z rozwojem silnika graficznego 3D, na potrzeby którego powstała.

Wersja 6.1 (29 czerwca 2007)

Od wersji 6.0 biblioteka zmieniła się właściwie nie do poznania. Dlatego nie ma sensu wypisywać zmian. Szczególnie, że pewnie nikt z niej wcześniej nie korzystał :P

Licencja

Biblioteka dostępna jest na licencji GNU LGPL, co znaczy m.in., że masz dostęp do jej kodu źródłowego oraz że możesz używać jej za darmo w dowolnych swoich programach, także zamkniętych.

» Licencja GNU LGPL

Autor

Adam Sawicki
E-mail: sawickiap@poczta.onet.pl
WWW: http://regedit.gamedev.pl
IRC: #warsztat @ PolNet
Gadu-Gadu: 2272474