È possibile utilizzare l'opzione -dump
dello strumento abi-compliance-checker per analizzare le firme di funzioni e metodi dal file di intestazione (s):
abi-compliance-checker -lib NAME -dump DESC.xml -headers-only -stdout > api.dump
XML descrittore (DESC.xml
) è il seguente:
<version>
VERSION
</version>
<headers>
/path(s)/to/headers/
</headers>
Lo strumento funziona come segue:
- chiamate
GCC
con -fdump-translation-unit
e un insieme di opzioni automatiche di -I...
sulle intestazioni specificate nel descrittore XML di input;
- Analizzare il dump AST generato da
GCC
;
- Generare firme e definizioni di funzione nel formato Data::Dumper o XML (se è disponibile l'opzione
-xml
aggiuntiva).
La firma campione di int BZ2_bzRead (int *bzerror, BZFILE *b, void *buf, int len)
funzione dal bzlib.h
intestazione appare come:
'228' => {
'Header' => 'bzlib.h',
'Line' => '160',
'Param' => {
'0' => {
'algn' => '4',
'name' => 'bzerror',
'type' => '30'
},
'1' => {
'algn' => '4',
'name' => 'b',
'type' => '16'
},
'2' => {
'algn' => '4',
'name' => 'buf',
'type' => '68'
},
'3' => {
'algn' => '4',
'name' => 'len',
'type' => '41'
}
},
'Return' => '41',
'ShortName' => 'BZ2_bzRead'
},
+1, tra l'altro per l'ultima due anni come parte del mio progetto parallelo, ho scritto un parser, che estrae firma metodo/funzione da 'classe, spazio dei nomi, classe interna 'ecc. Voglio renderlo commercializzato prima o poi. – iammilind
@iammilind: mi concentro sul materializzare il denaro. Nessun risultato definitivo ancora – sehe
@sehe, significa? hai anche scritto qualcosa del genere? Beh, quello di cui sto parlando non è solo un parser. È un progetto per il garbage collector automatico che include questa parte dell'estrazione di firme di puntatori, classi, spazi dei nomi, funzioni/metodi e così via. – iammilind