का उपयोग कर रूपांतरण मैं वर्गों और एपीआई Boost.Pythonअजगर सेल्सियस तक ++ समारोह Boost.Python
मैं वर्तमान में निम्नलिखित वास्तुकला बनाने की संभावनाओं की जांच कर रहा हूँ की मदद से सी ++ में लिखा और अजगर के संपर्क का एक समूह है।
अजगर में:
from boostPythonModule import *
AddFunction(boostPythonObject.Method1, args)
AddFunction(boostPythonObject.Method2, args)
AddFunction(boostPythonObject.Method2, args)
RunAll() # running is done by C++
C++ में:
void AddFunction(boost::object method, boost::object args)
{
/// 1. Here i need to extract a real pointer to a function
/// 2. Make argument and type checking for a function under method
/// 3. Unpack all arguments to native types
/// 4. Store the pointer to a function somewhere in local storage
}
void RunAll()
{
/// 1. run all previously stored functions and arguments for them
}
मूल रूप से मैं अपने कार्यक्रम के मूल भाग के लिए नीचे सभी कार्यों डाल करने के लिए कोशिश कर रहा हूँ। संकलन समय पर मैं नहीं जानता कि क्या करना चाहिए कार्यों मैं कॉल और क्या तर्क वे स्वीकार कर रहा हूँ - बात यह है कि मुझे यकीन है कि अगर यह बूस्ट metainfo से सभी आवश्यक डेटा निकालने के सामान्य तरीके से ऐसा करना संभव है नहीं कर रहा हूँ है।
कुछ प्रश्न:
1. क्या कोई साझा पाइथन जानकारी तालिका है जिसमें मैं कुछ सामानों की जांच करने के लिए उपयोग कर सकता हूं?
2. Boost.Python तर्क जाँच टाइप करता है। क्या इसे अलग से इस्तेमाल किया जा सकता है?
मुझे अपने विचार बताएं।
धन्यवाद
तुम सच में 'AddFunction()' में सभी प्रकार की जांच की जरूरत है? क्या यह विधि और तर्कों को कहीं भी स्टोर करने के लिए पर्याप्त नहीं होगा और उन विधियों को 'RunAll()' में कॉल करें, इस तरह से आप विधियों को निष्पादित करते समय किसी भी प्रकार की संबंधित त्रुटि प्राप्त करेंगे और बूस्ट। पाइथन आपके लिए यह करेगा । – Arlaharen
अच्छा, नहीं। असल में विचार उन फ़ंक्शन कॉल के बीच समय अंतर को कम करना है, इसलिए सभी तर्कों को पहले चेक किया जाना चाहिए। RuAll केवल सी के बारे में ++ समारोह संकेत दिए गए हैं (यानी functors), किसी भी अन्य सलाह पता होना चाहिए? – Alex
उस मामले में मेरे पास कोई नहीं है। :-) मुझे नहीं लगता कि यह एक उपयोग का मामला है जो बूस्ट.पथन को डिजाइन किया गया था और आपको जो भी चाहिए वो करने के लिए आपको मोड़ने में कठिनाई होगी। क्या आपके तरीकों से कॉल के बीच पाइथन में बिताया गया समय वास्तव में इतना महत्वपूर्ण है कि आपको यह करना है? लेकिन मैं तुम्हें अपने रूपरेखा किया है ... :-) – Arlaharen