Systém pre introšpekciu v C++
A system for introspection in C++
Systém pro introspekci v C++
bachelor thesis (DEFENDED)
View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/148390Identifiers
Study Information System: 235537
Collections
- Kvalifikační práce [11242]
Author
Advisor
Referee
Ježek, Pavel
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Programming and Software Systems
Department
Department of Software Engineering
Date of defense
10. 9. 2021
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
Slovak
Grade
Excellent
Keywords (Czech)
introšpekcia|C++|analýza zdrojových textovKeywords (English)
introspection|C++|source-code analysisIntrošpekcia a reflexia sú silné programovacie nástroje umožňujúce všeobecné riešenie problematických úloh, ako napríklad multiple dispatch alebo serializácia. V C++ je pod- pora pre introšpekciu veľmi slabá a reflexia nie je možná vôbec. Štandard jazyka sa za posledné obdobie značne rozvinul, vďaka čomu je už možné do jazyka tieto mechanizmy doplniť vlastným rozšírením. Výsledkom tejto práce je knižnica pre introšpekciu pracuj- úca s metadátami vygenerovanými zo zdrojového textu a generátor týchto metadát ako nástroj nad prekladačom. Funkčnosť celého systému je demonštrovaná implementáciou mechanizmu multiple dispatch, ktorý nie je jednoducho implementovateľný v štandard- nom C++. 1
Introspection and reflection are powerful programming tools that allow generic solu- tions for difficult problems such as multiple dispatch or serialization. In C++, the support for introspection is seriously limited, while reflection is virtually non-existent. The langu- age standard has been developing significantly in recent past and thus it is now possible to extend the language with those features using a custom tool. The result of this thesis is an introspection library working with metadata generated from source code and a compiler- based metadata generator. The functionality of the whole system shall be demonstrated by implementing multiple dispatch, for which there is no simple implementation in stan- dard C++. 1