मेरे साथ तुलना करें क्योंकि मैं इसे समझाता हूं।एक जावास्क्रिप्ट कॉलबैक पर एक लिपटे सी ++ ऑब्जेक्ट को कैसे पास करें?
मैं सी ++ का उपयोग करके एक नोड.जेएस मॉड्यूल लिखने की कोशिश कर रहा हूं, जो libhdf5 से कुछ वर्गों को लपेटता है और उजागर करता है।
मैं वर्तमान में libhdf5 से दो कक्षाओं में रूचि रखता हूं। पहला वाला File
है, और यह एक hdf5 फ़ाइल खोलता है। दूसरा एक Group
है, और यह उस फ़ाइल के भीतर समूहों का प्रतिनिधित्व करता है। आपको फ़ाइल ऑब्जेक्ट से ग्रुप ऑब्जेक्ट मिलते हैं।
मैंने कुछ कोड लिखा है जिसमें मैं File
ऑब्जेक्ट बनाता हूं और Group
प्राप्त करने का प्रयास करता हूं। मैं अपने Node.js मॉड्यूल को जावास्क्रिप्ट के रूप में संभव बनाने की कोशिश कर रहा हूं, इसलिए मैं कॉलबैक का उपयोग कर समूह को वापस करना चाहता हूं। मेरी File
आवरण के लिए सी ++ कोड में,
var hdf5 = require('hdf5');
var file = new hdf5.File('/tmp/example.h5');
file.getGroup('foobar', function (err, group) { console.log(group); });
तो मैं एक समारोह है कि यहाँ getGroup
कार्य करने के लिए नक्शे होगा, है, और यह: तो, मैं अपने मॉड्यूल कोड करने के लिए इतना है कि यह इस तरह प्रयोग किया जाता है कोशिश कर रहा हूँ दिए गए अज्ञात फ़ंक्शन को कॉल करें, किसी भी त्रुटि में गुजरने के साथ-साथ नया Group
ऑब्जेक्ट रैपर।
यह देखते हुए कि यह मुझे लगता है कि Node.js दस्तावेज़ factory of wrapped objects के रूप में दिखाता है, मैंने उदाहरण के बाद अपने Group
कोड को मॉडल किया है।
तो, मेरे पास Group
रैपर कोडेड किया गया है, लेकिन मैं इसे तुरंत चालू करने की कोशिश कर रहा हूं। मुझे फ़ंक्शन पैरामीटर के लिए v8 Arguments
क्लास का उपयोग करने से दूर जाने के बारे में जानने के लिए अभी तक पर्याप्त जानकारी नहीं है। इसके कारण, मैं अपने v8 लगातार कन्स्ट्रक्टर फ़ंक्शन के लिए आवश्यक कुछ पैरामीटर में पास नहीं कर पा रहा हूं (क्योंकि मैं इसे सी ++ से तत्काल कर रहा हूं, और जेएस-जमीन से नहीं)।
क्या कोई my code for libhdf5 पर एक नज़र डालें और मुझे यह प्राप्त करने के लिए एक सूचक दें? मुझे लगता है कि मैं लगभग वहां हूं, लेकिन मुझे बस कुछ याद आ रहा है।
यहाँ, मेरी Group
आवरण है निर्माता समारोह के साथ प्रकाश डाला: https://github.com/ryancole/node-hdf5/blob/master/src/h5_group.cc#L57-72
यहाँ मेरी File
आवरण है, लाइन के साथ hightlighted जहां मैं अपने मानकों में पारित करने के लिए की आवश्यकता होगी तर्क के रूप में, (या जो भी यह है कि मैं करने की जरूरत है पाठ के इस दीवार को पढ़ने के लिए https://github.com/ryancole/node-hdf5/blob/master/src/h5_file.cc#L110
अग्रिम धन्यवाद, और धन्यवाद :)
कहना है कि आप एक कारखाने विधि ('समूह :: Instantiate') की जरूरत है कि एक और वर्ग का एक उदाहरण वापस जाने के लिए है ? – ZachB