Thanks a lot, Cameron.

That sounds quite a painful solution but I got the idea.
Too bad we can't avoid this brute force :(

Thanks again,
Beinan


On 2013-09-18, at 10:51 PM, Cameron Elliott <Cameron@limevideo.com> wrote:

I've had to deal with similar stuff with SWIG,
the only solution I've been able to apply is to make local copies of the
3rd-party include files, and put ifdefs around the offending code,
and fix the problematic code:


#ifndef SWIG
enum AudioSessionCategory
{
kAudioSessionCategory_AmbientSound               = 'ambi',
kAudioSessionCategory_SoloAmbientSound           = 'solo',
kAudioSessionCategory_PlayAndRecord              = 'plar'
};
#else
#define HELPER(a,b,c,d) (a<<24|b<<16|c<<8|d)
enum AudioSessionCategory
{
kAudioSessionCategory_AmbientSound               = HELPER('a','m','b','i'),
kAudioSessionCategory_SoloAmbientSound           = ...
kAudioSessionCategory_PlayAndRecord              = ...
};
#endif

Then if you need to update after Apple releases new .h files, you can
do a diff between
the last generation original .h files, and your hand-modified ones,
and fix-up the newly released .h files.

cheers
Cam



Cameron Elliott
Lime Video Software  206-367-1053
www.limevideo.com
Digital Video SDKs for C# - .NET for Windows - Mono for Linux