Bare mit mir, wie ich das erkläre.Wie übergebe ich ein umschlossenes C++ Objekt an einen Javascript Callback?
Ich versuche, ein Node.js-Modul mit C++ zu schreiben, das einige Klassen von libhdf5 umschließt und verfügbar macht.
Ich bin zur Zeit in zwei Klassen von libhdf5 interessiert. Der erste ist File
, und es öffnet sich eine hdf5-Datei. Der zweite ist Group
, und er stellt Gruppen innerhalb dieser Datei dar. Sie erhalten Gruppenobjekte von einem Dateiobjekt.
Ich habe einen Code geschrieben, in dem ich ein File
Objekt erstellen und versuchen, ein Group
daraus zu erhalten. Ich versuche, mein Node.js-Modul als Javascripty wie möglich zu machen, also möchte ich die Gruppe mit einem Rückruf zurückgeben. Also, ich versuche mein Modul zu codieren, so dass es wie folgt verwendet wird:
var hdf5 = require('hdf5');
var file = new hdf5.File('/tmp/example.h5');
file.getGroup('foobar', function (err, group) { console.log(group); });
Also, in dem C++ Code für meinen File
Wrapper, würde ich eine Funktion habe, die die hier getGroup
Funktion abbildet, und es Ich würde die angegebene anonyme Funktion aufrufen und alle Fehler sowie den neuen Objektwrapper Group
übergeben.
Angesichts dieser klang für mich wie, was die Node.js Dokumentation zeigt, um eine factory of wrapped objects zu sein, habe ich meinen Group
Code nach den Beispielen dort modelliert.
Also, ich habe meine Group
Wrapper codiert, aber ich stecken versucht, es zu instanziieren. Ich weiß noch nicht genug, um zu wissen, wie man von der Verwendung der Klasse V8 Arguments
für Funktionsparameter abkommt. Aus diesem Grund kann ich nicht in der Lage sein scheinen in einigen Parameter zu übergeben, die ich für mein v8 persistent Konstruktorfunktion müssen (weil ich das von C++ bin instanziiert wird, und nicht von JS-Land).
Würde jemand bitte einen Blick auf my code for libhdf5 nehmen und geben Sie mir einen Zeiger, wie dies zu erreichen? Ich fühle mich, als wäre ich fast da, aber ich verpasse gerade etwas.
Hier sind meine Group
Wrapper, mit Konstruktorfunktion hervorgehoben: https://github.com/ryancole/node-hdf5/blob/master/src/h5_group.cc#L57-72
Hier sind meine File
Wrapper, mit der Linie hightlighted, wo ich in meinem Parameter zu übergeben brauchen würde, als Argument (oder was auch immer es ist, dass ich brauche ändern, um dies zu für diese zu arbeiten: https://github.com/ryancole/node-hdf5/blob/master/src/h5_file.cc#L110
Vielen dank im Voraus, und dank für das Lesen dieser Wand aus Text :)
Ist das zu sagen, dass Sie eine Factory-Methode benötigen ('Group :: Instantiate') eine Instanz einer anderen Klasse zurück ? – ZachB