2012-11-11 31 views
5

में कस्टम streambuf बनाने के लिए मैं this question के तर्क का पालन करने का प्रयास कर रहा हूं। किसी ने बुनियादी व्यवहार है कि हमारे जैसेकस्टम फ्लश कार्यान्वयन

Rcout << "some text" ; 

जहाँ हम xsputn और overflow कार्यान्वित Rprintf समारोह पर रीडायरेक्ट करने बातें लिखने की अनुमति देता का योगदान दिया।

std::streamsize Rcpp::Rstreambuf::xsputn(const char *s, std::streamsize num) { 
    Rprintf("%.*s", num, s); 
    return num; 
} 

int Rcpp::Rstreambuf::overflow(int c) { 
    if (c != EOF) { 
     Rprintf("%.1s", &c); 
    } 
    return c; 
} 

मैं भी निस्तब्धता को लागू करने की है, यानी इस वाक्य का समर्थन करना चाहते हैं:

Rcout << "some text" << std::flush ; 

जो विधि मुझे लगता है कि flush जोड़तोड़ अपने कस्टम धारा पर काम करता है ताकि लागू करने के लिए की जरूरत है?

उत्तर

6

यह sync() समारोह (filebuf में) की तरह है:

base_streambuf<>::sync() की
protected: 
virtual int sync() 

बेस संस्करण कुछ नहीं करता है, एक इसे अधिलेखित अंतर्निहित धारा के साथ कुछ तुल्यकालन बनाने के लिए आवश्यक है।

+3

धन्यवाद। 'आरसीपीपी 'के एसवीएन संशोधन 3935 में कार्यान्वित किया गया –