Bare con me come spiego questo.Come passare un oggetto C++ spostato a un callback Javascript?
Sto provando a scrivere un modulo Node.js, utilizzando C++, che esegue il wrapping ed espone alcune classi da libhdf5.
Attualmente sono interessato a due classi di libhdf5. Il primo è File
e apre un file hdf5. Il secondo è Group
e rappresenta i gruppi all'interno di quel file. Ottieni oggetti Group da un oggetto File.
Ho scritto del codice in cui creo un oggetto File
e provo a ottenere uno Group
da esso. Sto cercando di rendere il mio modulo Node.js il più possibile come Javascripty, quindi voglio restituire il gruppo usando un callback. Quindi, sto cercando di codificare il mio modulo in modo che sia usato in questo modo:
var hdf5 = require('hdf5');
var file = new hdf5.File('/tmp/example.h5');
file.getGroup('foobar', function (err, group) { console.log(group); });
Così, nel codice C++ per il mio File
involucro, mi piacerebbe avere una funzione che mappa la funzione getGroup
qui, ed è 'Chiamare la funzione anonima fornita, inoltrando eventuali errori così come il nuovo wrapper di oggetti Group
.
Dato che mi è sembrato quello che la documentazione Node.js mostra essere un factory of wrapped objects, ho modellato il mio codice Group
dopo gli esempi.
Quindi, ho il mio wrapper Group
codificato, ma sono bloccato cercando di istanziarlo. Non so ancora abbastanza per sapere come allontanarmi dall'uso della classe v8 Arguments
per i parametri di funzione. Per questo motivo, non riesco a passare alcuni parametri che mi servono per la mia funzione di costruttore persistente v8 (perché sto creando un'istanza da C++, e non da JS-land).
Qualcuno potrebbe dare un'occhiata a my code for libhdf5 e darmi un puntatore su come raggiungere questo obiettivo? Mi sento come se fossi quasi lì, ma mi manca qualcosa.
Ecco il mio Group
involucro, con funzione di costruzione ha evidenziato: https://github.com/ryancole/node-hdf5/blob/master/src/h5_group.cc#L57-72
Ecco il mio File
involucro, con la linea di hightlighted in cui avrei avuto bisogno di passare i miei parametri, come argomenti (o quello che è che ho bisogno di cambiare questo per questo lavoro: https://github.com/ryancole/node-hdf5/blob/master/src/h5_file.cc#L110
grazie in anticipo, e grazie per aver letto questo muro di testo :)
è quello di dire che avete bisogno di un metodo factory ('Gruppo :: Instantiate') per restituire un'istanza di un'altra classe ? – ZachB