2011-02-03 46 views
4

C++
我在C++中有一些记录器类。这个记录器在我的图书馆很常用。记录器允许将标准STL流设置为输出流。SWIG传递流从Python到C++

其中使用Python
Python库 “上方SWIG包裹C++库” 大量使用Python标准记录与StreamHandler中。喜欢的东西:

logger = logging.getLogger("base_logger") 

#create and set console handler 
ch = logging.StreamHandler() 
ch.stream = sys.stdout 
logger.addHandler(ch) 

如何蟒蛇流传递给C++库作为STL流使用痛饮?

所以你可以让C++使用你的python流。喜欢的东西:

ch = logger.handlers[NEEDED_HANDLER] 
Swig_wrapped_lib.set_stream(ch.stream) 

回答

1

技术上讲,你需要实现一个痛饮类型映射(中)表示,蟒蛇流对象转换成的std :: ostream的。但是,我担心这非常不平凡。

+3

是的。实际上,这就是问题所在。 – MajesticRa 2011-03-17 16:33:39