2009-02-13 14 views
26

क्या कोई भी ncurses के लिए सी ++ रैपर की सिफारिश कर सकता है?सी ++ रैपर ncurses के लिए?

+0

मैं उत्सुक हूँ, तुम क्यों सी ++ रैपर की आवश्यकता होगी:

यहाँ एक बहुत ही मामूली उदाहरण है? सी एपीआई का उपयोग क्यों न करें? बस सोच रहा है :) – hhafez

+15

यकीन है कि रैपर मौजूद नहीं हैं। लेकिन यदि रैपर मौजूद हैं तो उनका उपयोग क्यों न करें। मुझे संदेह है कि आप बस सबकुछ के लिए असेंबलर का उपयोग करते हैं? – BubbaT

+5

सी से सी ++ में जाने के साथ सी से सी ++ में जाने की तुलना में यह एक खिंचाव की तुलना में थोड़ा सा है? – hhafez

उत्तर

3

इस स्रोत फोर्ज परियोजना को आजमाएं। यह मैं अपने खुद के कुछ साल पहले लिखा है के लिए सी ++

http://ndk-xx.sourceforge.net/

+0

और आपने इसका इस्तेमाल किया है? – BubbaT

+1

मुझे थोड़े से छोड़ दिया लगता है। –

+3

हाँ रयान, यही कारण है कि मैंने पूछा। – BubbaT

1

एक ncurses विकास किट है ... मैं वैसा ही किया, क्योंकि एक ncurses-संगत पुस्तकालय लिनक्स में स्थापित किया गया था, लेकिन Win32 के तहत नहीं। (मैं PDCurses का उपयोग कर सकता था, लेकिन उस समय मैं पीडीसी_ब्रेकआउट() को स्रोत कोड खोलने के बिना रीफ्रेश() ऑपरेशन को रोकने से रोक नहीं सकता था।)

यह रैपर तेजी से भाग के रूप में 7 दिनों के भीतर लिखा गया था विकास। इस प्रकार, इस कार्यक्रम के लिए विशिष्ट इनपुट/आउटपुट डेटाटाइप पर कुछ (हटाने योग्य) निर्भरताएं हैं, लेकिन उन्हें सुरक्षित रूप से हटाया जा सकता है।

असल में, मेरे पास दो प्रमुख कार्य हैं - प्रारंभिकरण, जो सभी शाप प्रारंभिक कार्यों और रंग परिभाषाओं को कॉल करता है जिन्हें मैं बाद में ट्वीव करने की योजना नहीं बनाता, और रीफ्रेश फ़ंक्शन, जो आउटपुट में "आंतरिक" डिस्प्ले बफर स्थानांतरित करता है ।

कुल मिलाकर, आप इंडेक्स कार्ड में और अधिक आरामदायक बनाने महसूस कर सकते हैं या युक्त "initscr() नकल पुस्तिका; cbreak(); noecho(); चाल (y, x); addch (ch); endwin(); ", लेकिन यदि आप मेरे रैपर का उपयोग करना चाहते हैं, तो आप क्रिएटिव कॉमन्स लाइसेंस का पालन करते समय मुझे here से संदेश भेज सकते हैं या डाउनलोड कर सकते हैं।

+0

धन्यवाद लेकिन नहीं। यह एक निजी परियोजना है, और मैंने एक धारा आधारित संस्करण लिखना शुरू कर दिया। बुनियादी कंकाल प्राप्त करने के लिए मुझे केवल कुछ और घंटे लगाना चाहिए। – BubbaT

13

ncurses में स्वयं C++ बाइंडिंग का एक सेट शामिल है। मुझे नहीं पता कि किसी भी बड़े वितरण में सी ++ बाइंडिंग शामिल हैं लेकिन यदि आपको ncurses source मिलता है तो आप उन्हें सी ++ निर्देशिका में पाएंगे।

मुझे नहीं पता कि मैं उन्हें अनुशंसा करता हूं कि वे शायद सबसे अच्छा सी ++ बाइंडिंग हैं और इसमें फॉर्म, पैनल और मेनू एक्सटेंशन के लिए बाइंडिंग शामिल हैं। वे किनारों के चारों ओर थोड़ा मोटा हो और बहुत अधिक दस्तावेज नहीं है।

+0

दरअसल। क्या आप बाइंडिंग के संबंध में किसी भी दस्तावेज़ीकरण से अवगत हैं? ऐसी कोई चीज़ ऑनलाइन नहीं मिल रही है और मैं स्रोत -_- – alkar

+0

पढ़ने से बचाना चाहता हूं, जहां तक ​​मुझे पता है कि ncurses स्रोत में C++ निर्देशिका में केवल क्या है। मैंने स्रोत पढ़ने में बहुत समय बिताया। – Craig

+0

दस्तावेज़ निर्देशिका में थोड़ी सी भी संकेत नहीं है। मुझे लगता है कि इसमें कुछ समय लगेगा। कहां से शुरू करने के बारे में कोई सलाह? – alkar

1

कुछ साल पहले जब मुझे इसकी आवश्यकता थी, मैंने कई शाप फाइलों की समीक्षा की जो शाप सी ++ चीजें प्रदान करते हैं। हालांकि उन्होंने ठीक काम किया, मैं निराश था - यह नया कोड और भी 'शापित-मैक्रोज़' इंजेक्ट करता है। मैक्रोज़ को दीवार से बंद करने के किसी भी प्रयास को पहचान नहीं पाया (कोई नामस्थान, केवल कुछ कक्षाएं)। मुझे लगता है कि उनका लक्ष्य नहीं था।

मैंने अंततः निर्णय लिया कि ये मैक्रोज़ भी बहुत उपयोगी प्रतीकों पर फंस गए हैं, जिस तरह से केवल मैक्रोज़ ही कर सकते हैं। मैंने इन मैक्रोज़ के संपर्क को कम करने के लिए अपने कोड को दोबारा शुरू कर दिया।

अनिवार्य रूप से, मैंने अपने कई ऐप्स विधियों को स्थानांतरित किया जो चीजों को 2 नई फाइलों में प्रदर्शित करते हैं। इस रिफैक्टरिंग ने कुछ छोटी नई विधियां भी बनाईं, जिन्हें 2 नई 'डिस्प्ले' फाइलों में जोड़ा गया था। (11 फाइलें 13 तक बढ़ीं)

जैसा कि मैंने कहा, वे ठीक काम करते हैं, मेरा कोड परिवर्तन से असंतुष्ट था, cursesw.h में टिप्पणियों का सुझाव है कि यह मैक्रोज़ को ऑनलाइन में बदलता है, और मुझे कुछ कक्षाएं मिलती हैं क्या आप वहां मौजूद हैं।

cursesf.h कक्षाओं में cursesm.h (मेनू के लिए), और cursesw.h (विंडोज़ के लिए), curseslk.h (सॉफ्ट लेबल कुंजी सेट के लिए) के रूप में कहीं और इस्तेमाल किया जाता है, सभी चीजें जिन्हें मैंने अभी तक उपयोग नहीं किया है।

मुझे cursesapp.h पसंद नहीं आया - शायद यह एक विंडोज़ चीज है?


क्या मैं इसकी सिफारिश कर सकता हूं? खैर, मैं इस कोड को पिछले शापों में पसंद करता हूं, भले ही मैं मैक्रोज़ को निहित रखने के लिए प्रतिक्रिया करता हूं।

-1

शायद अपना खुद का सी ++ रैपिंग रोल करें?

... मैंने कुछ एनसीआरएस और सीडीके कार्यों और वस्तुओं के लिए कुछ सी ++ रैपर बनाए हैं।

हालांकि, मैंने केवल अपनी छोटी परियोजना के लिए आवश्यक समर्थन के रूप में कार्यों और संरचनाओं के लिए रैपर बनाए हैं, जो सीडीके और एनसीआरएस का उपयोग अपने जीयूआई के लिए करता है। लेकिन, वे आपको सीडीके की अपनी सी ++ रैपिंग और एनसीआरएस कॉल की आवश्यकता के लिए विचार दे सकते हैं।

मूल रूप से मैंने उनका उपयोग किया ताकि मैं सी ++ विनाशकों को char* स्ट्रिंग्स के बजाय std::string का उपयोग करके या किसी भी गतिशील रूप से बनाए गए चार * तारों को हटाकर मेमोरी लीक से बच सकूं।

class RXL_ncurses { 

public: 
    static void draw(WINDOW * pWin, int y, int x, std::string lineOfText); 
}; 

void RXL_ncurses::draw(WINDOW * pWin, int y, int x, std::string lineOfText) { 
    // 
    // Draw a std::string into the WINDOW*, starting at y,x 
    // 
    chtype letter; 
    unsigned int i; 
    unsigned int xPos; 
    unsigned int yPos; 

    for(i = 0; i < lineOfText.size(); i++) { 
    letter = (chtype) lineOfText[i]; 

    xPos = i + x; 
    yPos = y; 
    mvwaddch(pWin, yPos, xPos, letter); 
    } 
} 

http://mrflash818.geophile.net/software/nc_834v5010generator/

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