Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Waseihou 11. 02. 2014, 22:41:54
-
Ahoj, potřeboval bych něco, co by extrahovalo kompletní "interface" classy v C++ která bude mít všechny metody jako nějaká jiná classa, a to včetně metod jejich předků a včetně multiple inheritance.
Např. mějme classu která je zděděná z templaty která dědí z MFC třídy a chci udělat stub pro linux verzi aby se to dalo zkompilovat, ale nechci case-by-case řešit kdo co všechno to volá - prostě kompletní interface.
Moc jsem nad tím nepřemýšlel, asi by šlo udělat nějaký skript, ale neví někdo o hotovém řešení? Prostě prográmek který když pustím na zdroják a zadám jméno classy tak to vyextrahuje/vygeneruje. Mělo by to obsahovat public a protected metody, tudíž to co může být voláno a nebo přetžíženo v potomku kde může být nějaká ta "kustomizace".
-
Ahoj, potřeboval bych něco, co by extrahovalo kompletní "interface" classy v C++ která bude mít všechny metody jako nějaká jiná classa, a to včetně metod jejich předků a včetně multiple inheritance.
Např. mějme classu která je zděděná z templaty která dědí z MFC třídy a chci udělat stub pro linux verzi aby se to dalo zkompilovat, ale nechci case-by-case řešit kdo co všechno to volá - prostě kompletní interface.
Moc jsem nad tím nepřemýšlel, asi by šlo udělat nějaký skript, ale neví někdo o hotovém řešení? Prostě prográmek který když pustím na zdroják a zadám jméno classy tak to vyextrahuje/vygeneruje. Mělo by to obsahovat public a protected metody, tudíž to co může být voláno a nebo přetžíženo v potomku kde může být nějaká ta "kustomizace".
A nezvládl by něco takového v základu Doxygen? Jako člověk, který mu prozatím nerozumí tak, jak by potřeboval sice nechci dělat konečné soudy, ale nedal by se nastavit tak, aby jednoduše vypsal jméno třídy a k němu všechny funkce s tím, že k nim nedopíše dokumentaci, protože k ní nemá příslušný komentář?
-
Parsování C++ je velice složité, takže na to nebude jenom jednoduchý skript. Nicméně jde použít existující nástroje, třeba GCCXML (ano, používá to GCC pro generování XML rozhraní :-) ), šlo by použít rozhraní pro statické analyzátory v Clangu anebo vytáhnout parser z Doxygenu (i když ten pro tento účel asi nebude moc spolehlivý).
-
Parsování C++ je velice složité, takže na to nebude jenom jednoduchý skript. Nicméně jde použít existující nástroje
To zni jako dobry napad, nebo se podivat na http://www.swig.org/
-
jestli někdo píše generátor wraperů, jsem první zákazník. V C++ mi tahle vlastnost chybi uz hrozně dlouho (moznost generikou generovat metody ktere nejsou deklarované na třídě podle jiného rozhraní a jejich vykonáni prostým delegováním pres pointer)
-
Např. mějme classu která je zděděná z templaty která dědí z MFC třídy a chci udělat stub pro linux verzi aby se to dalo zkompilovat,
Pokud jde o to jen to zkompilovat, nestačilo by použít winelib?
-
Pokud hledáte parser, skuste kouknout na http://clang.llvm.org/docs/Tooling.html (http://clang.llvm.org/docs/Tooling.html)
Je to knihovna parseru který používá překladač clang takže by to mělo být kompletní co se týká vlastností, metod atd.
Nemám s tím přímou zkušenost ale chlubí se tam že je to "relativně" snadné na použití :)
-
"Zkuste" samozřejmně. Bez ranní kávy raději nikam nic nepsat.