Active Template Library
• tech • 399 słów • 2 minuty czytania
Ostatnio bawiłem się z prostą aplikacją embedując kontrolkę Internet Explorera oraz silnik Gecko. Po raz pierwszy miałem nieco szerszy i dłuższy kontakt z technologią COM i XPCOM. I przy okazji odkryłem ciekawą bibliotekę.
Nieodłączny związek z COM ma biblioteka ATL (Active Template Library), która w rzeczywistości jest zbiorem klas szablonowych języka C++ opracowanych przez Microsoft. Jak się można domyślić z nazwy, idea podobna jak w przypadku STL. Głównym zadaniem biblioteki jest ułatwienie korzystania i tworzenia komponentów w technologii COM.
Jak to zawsze bywa, w każdej bibliotece można znaleźć ciekawe i przydatne funkcje. Podobnie ma się sprawa z ATL, gdzie prócz czysto COM-owych rzeczy znajdziemy zbiór fajnych klas i funkcji, które możemy wykorzystać w dowolnym programie. Do tego nie musimy dodatkowo nic linkować do programu.
Do wspomnianych utilsów można zaliczyć mechanizmy konwersji stringów pomiędzy różnymi formatami i kodowaniami. Oczywiście ciekawych rzeczy można znaleźć dużo więcej (obsługa plików, rejestru, inteligentne wskaźniki…). W przypadku stringów, skorzystanie z tych mechanizmów zamiast ręcznego rzeźbienia kodu z MultiByteTo-/WideCharTo-...
jest dużo łatwiejsze i bezpieczniejsze. Mamy kod odporny na wyjątki, a dzięki zastosowaniu idiomu RAII nie musimy martwić się o przydział i zwalnianie pamięci, o wszystko zadbają odpowiednie mechanizmy języka i kompilator.
Sam za pierwszym razem próbowałem opakować w klasę i RAII wspomniane stringowe funkcje i stworzony kod byłem gotowy zostawić w projekcie. Ale nagle mnie olśniło - “korzystam z COM, wspieram się ATL-em, więc na pewno coś musi być dostępne do zabaw ze stringami” i znalazłem ;)
Tworzony program pisałem w czystym WinAPI, ale bez problemów można wykorzystać ATL w dowolnym innym, czy to MFC (choć sam ma swoje mechanizmy), czy WTL, czy cokolwiek innego.
ATL powstało głownie do uproszczenia zabaw z COM, więc posiada jedynie elementy do tego niezbędne. Chcąc w podobnym stylu stworzyć aplikację, warto skorzystać z biblioteki WTL (Windows Template Library). Ta biblioteka również jest zbiorem wzorców, tym razem implementujących obsługę okien, GUI i całej reszty niezbędnej do budowy aplikacji dla systemu Windows.
Bardzo zachęcam do poznania i korzystania z ATL, gdy musimy bawić się z technologią COM. Ale nawet jeśli piszemy zwykłą aplikację pod system Windows warto skorzystać z szablonów oferowanych przez ATL. Nasz kod będzie bardziej zwięzły i bezpieczny pod względem wyjątków oraz zarządzania zasobami. Nie będziemy już musieli się tym ręcznie zajmować i dbać o zwolnienie (konstruktor weźmie to na swoje barki przy wyjściu z zasięgu).
Przy okazji, API w xime prawdopodobnie będzie oparte na technologii podobnej do COM/XPCOM ;)
Komentarze (0)