की विशेषता के रूप में structs के ऐरे, मैं एक सी संरचना को समाहित करने की कोशिश कर रहा हूं, जिसमें से एक सदस्य structs के पॉइंटर्स की एक सरणी है, और मुझे यह पता लगाने में समस्याएं आ रही हैं कि इसे कैसे किया जाए।पर्ल 6 नेटिवॉल संरचना
मान लीजिए कि सी कोड इस तरह दिखता है:
struct foo
{
unsigned char a;
};
struct bar
{
struct foo *f[5];
};
कोड इस प्रकार का काम करता है:
use NativeCall;
class foo is repr('CStruct') {
has uint8 $.a;
}
class bar is repr('CStruct') {
has foo $.f1;
has foo $.f2;
has foo $.f3;
has foo $.f4;
has foo $.f5;
}
लेकिन यह भयानक है।
ए CArray
का कोई उपयोग नहीं है, क्योंकि यह सिर्फ एक सरणी के लिए एक सूचक है, पॉइंटर्स की एक श्रृंखला नहीं है; मैं has A @.a
जैसे कुछ का उपयोग नहीं कर सकता, क्योंकि repr('CStruct')
उस तरह की विशेषता को संभाल नहीं करता है।
कोई संकेत?
क्या मैं इस 'वर्ग बार की तरह कुछ था पाने के लिए कोशिश कर रहा था रेपर ('CStruct') है {foo है @ .a} ', जो सही वाक्यविन्यास नहीं है, क्योंकि 'foo' नेटकॉल का उपयोग कर एक स्वीकृत विशेषता प्रकार नहीं है। –
@FernandoSantagata बेशक यह समर्थन नहीं करता है कि, राकुडो के सरणी में सी सरणी (ढेर पर आवंटित) के साथ अलग-अलग मेमोरी लेआउट है। मुझे मेटा-ऑब्जेक्ट प्रोटोकॉल के साथ मेटा-ऑब्जेक्ट प्रोटोकॉल के साथ स्वत: जोड़ विशेषता, एक सरणी अनुकरण करने का एक तरीका मिलना चाहिए, लेकिन कोई भूमिका बनाने या मैन्युअल रूप से मैनिपुलेशन करने के बारे में कोई दस्तावेज नहीं है, या एक विशेषता जोड़ें (एचएएस द्वारा घोषित) मेटा-ऑब्जेक्ट प्रोटोकॉल तरीके में। शायद आप राकुडो कोर डेवलपर को एक प्रश्न ईमेल भेज सकते हैं। – araraloren