[C++-sig] calling python logger module from C++

Petrucio petrucio at hoplon.com
Sat May 14 01:26:56 CEST 2005


I was reading Andreas post and re-thinking about mine and it is actually a 
little nuts.

Exporting wrapper instances of a var-argged function like this can only be 
done if you already have an implementor in C++ to call...

Need coffee.

At 10:46 13/5/2005, you wrote:
>I don't think it is possible.
>
>I usually export 'instances' of my varargs functions to python. This could
>be an issue if the types of your args are also variable, like the standard
>printf-like functions.
>
>You can in this case just export the most common uses, of a string and some
>other variable after, something like:
>
>Your real vararged function:
>virtual void Log( LogLevel level, std::wstring msg, ... ) = 0;
>
>Exported 'instances'
>virtual void Log( LogLevel level, std::wstring msg) = 0;
>virtual void Log( LogLevel level, std::wstring msg, int int_arg) = 0;
>virtual void Log( LogLevel level, std::wstring msg, std::wstring str_arg) = 0;
>
>Although I can't immediately see the need for this, since that better place
>to format your string than python?
>
>Beware of performance issues when using an inter-language polimorphic
>solution this this for something that will probably be called a lot like a
>logger.
>
>Petrucio - Game Programmer
>Hoplon Infotainment - www.taikodom.com.br
>
>At 00:19 12/5/2005, you wrote:
> >I've been wondering how best to provide support for calling my python logger
> >(which uses the standard logger module) from within my C++ extensions built
> >using Boost.Python. My first thought was to do this:
> >
> >enum LogLevel {
> >   LogLevelCritical = 50,
> >     LogLevelError = 40,
> >     LogLevelWarning = 30,
> >     LogLevelInfo = 20,
> >     LogLevelDebug = 10
> >};
> >
> >
> >class PiLogger {
> >public:
> >
> >   virtual void Log( LogLevel level, std::wstring msg ) = 0;
> >
> >};
> >
> >and then implement this class in python, setting it as a static variable in
> >my C++. This works pretty well, but I'd like to be able to support format
> >strings, which requires varargs. I couldn't figure out how to wrap a varargs
> >function - is that even possible? If it's not, is there a better way to
> >accomplish what I want?
> >
> >Thanks,
> >
> >Eric
> >
> >_______________________________________________
> >C++-sig mailing list
> >C++-sig at python.org
> >http://mail.python.org/mailman/listinfo/c++-sig
>
>_______________________________________________
>C++-sig mailing list
>C++-sig at python.org
>http://mail.python.org/mailman/listinfo/c++-sig




More information about the Cplusplus-sig mailing list