2013-04-19 4 views
7

मेरे पास शुद्ध पर्ल में एक जटिल एन्कोडिंग फ़ंक्शन है जो मैं प्रदर्शन को बढ़ावा देने की उम्मीद में एक्सएस में परिवर्तित कर रहा हूं।पर्ल एक्सएस कोड से, मैं खुद को फिर से कॉल कैसे करूं?

जो फ़ंक्शन मैं एक्सएस में परिवर्तित कर रहा हूं उसे पुनः कॉल करने की आवश्यकता है। मैं देख सकता हूं कि शुद्ध पर्ल फ़ंक्शंस को कॉल करने के लिए call_sv का उपयोग कैसे करें ["मैन perlcall"] के लिए धन्यवाद।

लेकिन एक्सएस के भीतर से मैं खुद को बिल्ली (या कोई अन्य एक्सएस फ़ंक्शन) कैसे कहूं?

(पी एस क्षमता बहुत वांछनीय है ...)

किसी ने मुझसे एक संकेत फेंक कर सकते हैं? या एक उदाहरण? पी-पी-पी-कृपया!

अद्यतन: पहला उत्तर बिल्कुल सही था। शुद्ध सी कार्यों को रिकर्सिव करने के लिए कॉल करना ठीक काम करता है।

+0

पर्लमोक्स में क्रॉस-पोस्ट: http://perlmonks.org/?node_id=1029459 – salva

उत्तर

9

मत करो। एक्सएस एक सी समारोह में एक पर्ल इंटरफ़ेस प्रदान करने के लिए एक तंत्र है। सी फ़ंक्शन से एक्सएस फ़ंक्शन को कॉल न करें (जिसके लिए आप call_sv या इसी तरह का उपयोग करेंगे); एक्स फ़ंक्शन से सी फ़ंक्शन को कॉल करें।

अपने रिकर्सिव सी फ़ंक्शन लिखें और इसे एक्सएस कोड के बाहर रखें (MODULE = लाइन से पहले या अलग .c में)। इसे एक पतली एक्सएस रैपर से बुलाओ।

+0

आह ... वास्तव में मैंने उस दृष्टिकोण को बहुत अधिक माना। समस्या यह है कि मैं अपने अपवाद हैंडलिंग तंत्र के रूप में क्रोक का उपयोग कर रहा हूं, और शुद्ध-सी मुझे ऐसा करने की अनुमति नहीं देगा, है ना? –

+0

इसके अलावा, पार्सिंग फ़ंक्शन पर्ल हैश संरचनाओं (एन्कोड के लिए) द्वारा संचालित किया जा रहा है और हैश संरचनाओं (डीकोड के लिए) का निर्माण कर रहा है। तो मैं पूरे कोड में एसवी संरचनाओं के साथ पार्सिंग और काम कर रहा हूं। मुख्य कार्य एक्सएस में होने का मतलब है कि एक्सएस मेरी सभी हेडर फाइलों को संभाल लेगा, और मैं यह सुनिश्चित करने के लिए प्राणियों का उपयोग कर सकता हूं कि मेरे एसवी बफर संदर्भ सही तरीके से गिने गए हैं। इसलिए एक्सएस डुबकी मेरा आखिरी उपाय होगा! –

+0

@ the.jxc: आप अपने सी कार्यों में पर्ल सी एपीआई से पर्ल डेटा संरचनाओं और कार्यों का उपयोग कर सकते हैं, यह कोई मुद्दा नहीं है। – salva

संबंधित मुद्दे