Si potrebbe considerare ctags, disponibile su molte piattaforme. L'output è facilmente analizzabile e pieno di informazioni necessarie.
maggiori informazioni Per la vostra domanda, ho dovuto guardare alle molte opzioni disponibili, e dopo un po 'ho trovato. Per esempio:
ctags -N -x --c-kinds=+p crowd.*
produce questa uscita
CrowdSim class 44 crowd.h class CrowdSim
CrowdSim function 47 crowd.h CrowdSim(const std::string& contentDir) : _contentDir(contentDir) {}
Particle function 35 crowd.h Particle()
Particle struct 25 crowd.h struct Particle
_contentDir member 56 crowd.h std::string _contentDir;
_crowd_H_ macro 18 crowd.h #define _crowd_H_
_particles member 57 crowd.h std::vector<Particle> _particles;
animTime member 32 crowd.h float animTime;
chooseDestination function 24 crowd.cpp void CrowdSim::chooseDestination(Particle &p)
chooseDestination prototype 53 crowd.h void chooseDestination(Particle &p);
dx member 28 crowd.h float dx, dz; // Destination position
dz member 28 crowd.h float dx, dz; // Destination position
fx member 29 crowd.h float fx, fz; // Force on particle
fz member 29 crowd.h float fx, fz; // Force on particle
init function 35 crowd.cpp void CrowdSim::init()
init prototype 49 crowd.h void init();
node member 31 crowd.h H3DNode node;
ox member 30 crowd.h float ox, oz; // Orientation vector
oz member 30 crowd.h float ox, oz; // Orientation vector
px member 27 crowd.h float px, pz; // Current postition
pz member 27 crowd.h float px, pz; // Current postition
update function 68 crowd.cpp void CrowdSim::update(float fps)
update prototype 50 crowd.h void update(float fps);
(nota: -x è solo per l'ispezione utente facile)
Ovviamente c'è sempre un modo per richiamare il codice C++ da .NET, utilizzando C++/CLI. Una soluzione più portabile sarebbe quella di fornire un semplice wrapper C attorno a libclang (dovrebbe essere abbastanza semplice). Ma la soluzione migliore sarebbe quella di optare per una versione precedente di Clang, quando la sua bella stampante XML esisteva ancora. È davvero triste che sia stato rimosso da Clang. –
Un'altra opzione (un po 'arrugginita, ma funziona ancora per la maggior parte dei casi) è il parser Elsa combinato con il preprocessore gcc. –
Non è chiara la precisione di una risposta. Potresti costruire una soluzione basata su parentesi di accoppiamento che probabilmente produrrebbe informazioni semplici su metodo/classe il 90% delle volte, con errori spettacolari l'altro 10%. Cosa intendi fare con i risultati? –