views:

763

answers:

2

I am getting more than a little sick of this iphone sdk and it's documentation...

I am calling AudioConverterNew

in the documentation under Returns: it says "returns a status code" ... really...

so far, through playing around with the parameters I have only been able to get two different errors neither of which are listed at the bottom of the Audio Converter reference.

they are 'mrep' and '?tmf' (casting the OSStatus to a char array) but the specific codes aren't really the point.

as far as I can tell, random error codes are defined in random files, so you can't just search one file, I can't find a help document that just lets you search for an error code to get more info, and from what I can tell, in OSX you can use GetMacOSStatusErrorString() to convert an error to something useful, but there is no iphone equivalent?

any help would be greatly appreciated.

EDIT:

ok, so casting them gives them in reverse (something I checked for 'mrep' but was not there either way round) , fmt? is in the list for the Audio Converter api, and is pretty self explanatory if a bit vague, but fair enough, still 'perm' isn't there (although it might be something to do with the simulator not supporting aac decoding) and my general question still stands.

+2  A: 

No. At least not with a public API.

But some OSStatus are four-character-codes, so you can use (extracted from iPhone SDK's sample code "CAXException.h")

static char *FormatError(char *str, OSStatus error)
{
    // see if it appears to be a 4-char-code
    *(UInt32 *)(str + 1) = CFSwapInt32HostToBig(error);
    if (isprint(str[1]) && isprint(str[2]) && isprint(str[3]) && isprint(str[4])) {
        str[0] = str[5] = '\'';
        str[6] = '\0';
    } else
        // no, format it as an integer
        sprintf(str, "%d", (int)error);
    return str;
}
KennyTM
yeah, by the looks of it this is the best you can do...
matt
That's depressing...
sehugg
A: 

OSStatus err; ... printf("%s", (char*)&err);

peter
That will result in a nice crash if there is no 0 byte following on the stack soon.
DarkDust